0 0

如何定义Eclipse中build path上JAR包的访问规则?0

如下图所示,我们在导入某一些JAR包时,构建路径中该JAR包下面会自然附带一些访问规则。比如:禁止访问某些package。

那么我希望的效果是, 我自己对外提供的JAR包,在被别人使用的时候也缺省带上这样的访问规则,即:不做特殊改动,缺省情况下是无法访问JAR中的内部私有package的。

这个很类似于OSGi中,一个模块可以设定自己Export-Package,只有本模块导出的package,其他模块在运行时才可见。而内部的package,即使在JAR包中,其他模块也是无法访问的。 我现在的需求就是如何利用Eclipse JAR包的访问规则,达到在编译期屏蔽私有package的目的。

知道的,指点下,多谢!!





问题补充:再补充一下,我的意思是说, 作为JAR包的提供者,我希望对外自然屏蔽一些JAR包内私有的package。
以免对使用者产生错误的引用。

如果以后JAR包升级、改造,是不需要兼容这些私有的package内部的类的。

所以,请不要说 使用Java缺省的 包访问来修饰Class等方案,这不符合我的要求。

问题补充:也不要说,让使用者自己修改Eclipse中的JAR包的访问规则。 我的目的不是绝对不能访问,而是告诉使用者,缺省情况下,这些package里面的类是不对外的,也就是说,以后升级的话,是完全不考虑兼容性的。

或者即使编译通过,如果放在OSGi环境下,运行时也会报找不到类的错误。

问题补充:或者说,意图是  希望把OSGi运行时对package的限制,在编译期,通过开发工具就体现出来。

使得编译期和运行期 对package的可见性有一个一致的效果。

从而避免,编译期错误引用了运行期根本无法访问的类,导致编译成功,但运行失败。

希望这种错误在编译期就能避免。
 
2014年5月17日 10:52
  • 大小: 58.6 KB

3个答案 按时间排序 按投票排序

0 0

采纳的答案

楼主,你好,通过eclipse导出jar包时,可以指定相应是Seal的package,实现与你类似的需求。部署是在第二次点击Next时出现的画面。整个配置最终会保存在MANIFEST.MF中。
内容如下:

Manifest-Version: 1.0

Name: com/test/mytest/
Sealed: true

作用:
引用

包密封
密封 JAR 文件中的一个包意味着在这个包中定义的所有类都必须在同一个 JAR 文件中找到。这使包的作者可以增强打包类之间的版本一致性。密封还提供了防止代码篡改的手段。
要密封包,需要在 JAR 的 manifest 文件中为包添加一个 Name 头,然后加上值为“true”的 Sealed 头。与可执行的 JAR 一样,可以在创建 JAR 时,通过指定一个具有适当头元素的 manifest 文件密封一个 JAR,如下所示:
Name: com/samplePackage/
Sealed: true

Name 头标识出包的相对路径名。它以一个“/”结束以与文件名区别。在 Name 头后面第一个空行之前的所有头都作用于在 Name 头中指定的文件或者包。在上述例子中,因为 Sealed 头出现在 Name 头后并且中间没有空行,所以 Sealed 头将被解释为只应用到包 com/samplePackage 上。
如果试图从密封包所在的 JAR 文件以外的其他地方装载密封包中的一个类,那么 JVM 将抛出一个 SecurityException 。


参考自:
http://zydky.iteye.com/blog/559124

2014年5月19日 13:24
0 0

为什么要将访问规则定义到包上呢?不直接在类上定义更好更方便么?

2014年5月18日 19:15
0 0

要求貌似有点高
访问权限在代码级别似乎就只有4种访问修饰符
如果是在非代码级别上做处理(如果可能的话)即使能让eclipse符合预期,那换一个IDE怎么办,感觉不靠谱啊

2014年5月17日 11:48

相关推荐

    java项目中去掉多余的jar包(三个Eclipse插件),有操作图示

    三个Eclipse插件可以去掉多余的java项目中jar包,有操作图示。

    使用eclipse查看jar包的工具

    2.【Java Build Path】-【Configure Build Path】-【Libraries】,在下面找到如:Guava-r09.jar包,展开它,选择【Source attachment】,单击右边的【Edit…】按钮。 3.在打开的窗口中,可选择文件(jar\zip),...

    eclipse单元测试所需jar包

    在这个场景中,"eclipse单元测试所需jar包"是指为了在Eclipse中进行单元测试所需的外部库或JAR文件。 Eclipse本身包含了基本的JUnit框架支持,但有时我们需要更强大的测试工具或扩展,比如Mockito、PowerMock等。...

    在eclipse中配置jar包的相对路径

    ### 在Eclipse中配置JAR包的相对路径 在Java开发过程中,经常需要引入外部库(JAR包)来扩展项目功能或简化开发流程。Eclipse作为一款流行的Java集成开发环境(IDE),提供了多种方式来管理和配置这些外部库。本文...

    Eclipse用jstl需要的jar包

    在"标题"中提到的"Eclipse用jstl需要的jar包",主要指的是两个关键的jar文件:`jstl.jar`和`standard.jar`。`jstl.jar`包含了JSTL的核心类和接口,而`standard.jar`则提供了JSTL实现所需的支持库,如EL(Expression ...

    eclipse链接hbase所需jar包,hbase版本1.2.6,Hadoop版本2.7.1

    为了在Eclipse中成功连接并操作HBase数据库,你需要正确的依赖库,也就是jar包。HBase 1.2.6版本与Hadoop 2.7.1版本是兼容的,所以你需要确保你的开发环境配置了这些特定版本的jar包。 首先,我们需要了解HBase和...

    eclipse可导入的jar包

    "eclipse可导入的jar包"这个资源集合就是针对这样的需求整理的,它包含了几个在Eclipse中编写Java程序时可能需要用到的库。 首先,我们来看一下“jxl”这个标签。jxl是一个开源的Java库,专门用于读写Microsoft ...

    Java开发中Eclipse所需Jar包

    - 通过"Build Path" -> "Configure Build Path" -> "Libraries" -> "Add JARs" 或 "Add External JARs",选择相应的Jar文件添加到项目的类路径中。 - 如果是Maven项目,可以在pom.xml文件中添加对应的依赖,Eclipse...

    eclipse 第三方jar包配置.txt

    本文将详细介绍一种不依赖于Eclipse内置buildpath功能的方法来配置第三方JAR包。 #### 二、Eclipse项目结构简介 在深入讨论如何配置第三方JAR包之前,我们需要先了解Eclipse项目的几个关键概念: 1. **项目路径**...

    Eclipse插件打包Jar文件fatjar(支持eclipse4.4及以上版本).zip

    本话题将围绕"Eclipse插件打包Jar文件fatjar"展开,讲解如何在Eclipse 4.4及以上版本中创建一个包含所有依赖的“fat jar”文件。 "Fat jar",又称为"uber jar",是一种将项目的所有依赖库合并到一个单一的JAR文件中...

    eclipse导入JAR包 jar包是文件类型

    总结来说,Eclipse导入JAR包是Java开发过程中常见的一项操作,通过以上步骤,我们可以将外部库整合到项目中,从而利用这些库提供的功能。正确地导入和管理JAR包对于提高开发效率和保证项目的正常运行至关重要。

    eclipse兼容高低版本所需的jar包

    在Eclipse中,可以通过右键点击项目 -> "Build Path" -> "Configure Build Path" -> "Libraries" 来查看和管理这些库。如果缺少某个jar包,可以点击 "Add Jars" 或 "Add External Jars" 添加。 2. **使用版本兼容的...

    eclipse中反编译jar包源码

    "eclipse中反编译jar包源码"这个主题涉及到如何在Eclipse集成开发环境中使用特定的插件和工具来查看.jar文件的源代码。 首先,我们来看一下标签"jad",它是Java反编译器JAD的简称。JAD是一款流行的Java字节码到源...

    eclipse-json相关jar包

    本话题将详细介绍如何在Eclipse中使用JSON以及与之相关的jar包。 1. **Eclipse中的JSON支持** 在Eclipse中处理JSON数据,开发者通常会使用到一些库来方便地解析和生成JSON对象。这些库包括Jackson、Gson、org.json...

    Eclipse 打可执行JAR包

    在Eclipse中,右键点击项目 -> `Properties` -> `Java Build Path` -> `Libraries`,然后选择`Add Class Folder`或`Add External JARs`将依赖的库添加进来。接着,转到`Order and Export`选项卡,确保你的主类所在的...

    eclipse离线插件compiler反编译jar包进行debug调试

    这可以通过右键点击项目中的jar文件,选择"Build Path" -> "Configure Build Path" -> "Libraries" -> "Add External JARs"来实现。接着,选择你需要的jar包,点击"OK"添加到项目中。 接下来,我们将使用新安装的反...

    Eclipse常见jar包

    下载后,将其复制到Eclipse项目的`lib`目录下,然后右键点击项目,选择“Build Path” -> “Configure Build Path” -> “Libraries” -> “Add Jars”,选择添加的jar包并确认。这样,你的Eclipse项目就能识别并...

    解决The project cannot be built until build path

    解决 Eclipse 中“项目无法构建直到build path”问题 Eclipse 是一个功能强大且流行的集成开发环境(IDE),广泛应用于 Java Web 开发中。但是在使用 Eclipse 进行项目开发时,经常会遇到“项目无法构建直到build ...

    eclipse打开项目所在位置jar包

    本篇将详细解释如何在Eclipse中打开项目所在位置的jar包,以及这背后的原理和相关知识点。 首先,当我们提到“jar包”,全称为Java Archive,是Java平台的一种归档格式,用于集合多个类文件和其他资源文件,形成一...

    eclipse查看jar包源码的工具.zip

    本教程将详细介绍如何使用“jd-eclipse”插件在Eclipse中查看jar包的源码。 首先,让我们了解一下jd-eclipse插件。jd-eclipse是Java反编译器JD-GUI的一个Eclipse版本,它能够将已编译的Java字节码转换回源代码形式...

Global site tag (gtag.js) - Google Analytics