我正在使用ClassPath.getAllClasses
中的Guava
在运行时类中实现某个接口的类。与rt.jar
一起使用时,它可以从sun.*
和类似的程序包中找到许多类,我想将它们过滤掉。
我想重用Eclipse和其他Java编译器使用的机制来警告受限API。这些信息是驻留在JRE还是硬编码到Eclipse中?
答案 0 :(得分:5)
此信息存储在Eclipse内部的所谓的 Execution Environments配置文件中。
由于这些配置文件最初是OSGi东西(请参见Bundle-RequiredExecutionEnvironment
),因此这些配置文件存储在*.profile
文件的org.eclipse.osgi插件/捆绑软件中,每个文件均包含可访问软件包的白名单。 (org.osgi.framework.system.packages
),e。 G。这里JavaSE-1.8
。
如果您创建一个新的Java项目,则可以选择其中一个
sun.*
个软件包或创建项目后,可以在 Project>属性:Java构建路径 的选项卡 Libraries 中更改所选的JRE。 >选择JRE,然后单击 编辑... 。
此外,由于Java 9引入了Java Platform Module System,因此JRE本身限制了对某些软件包的访问(并且文件rt.jar
代替了文件modules
)。 / p>