Eclipse如何知道com.sun是受限制的API?

时间:2018-08-25 15:13:07

标签: java eclipse guava

我正在使用ClassPath.getAllClasses中的Guava在运行时类中实现某个接口的类。与rt.jar一起使用时,它可以从sun.*和类似的程序包中找到许多类,我想将它们过滤掉。

我想重用Eclipse和其他Java编译器使用的机制来警告受限API。这些信息是驻留在JRE还是硬编码到Eclipse中?

1 个答案:

答案 0 :(得分:5)

此信息存储在Eclipse内部的所谓的 Execution Environments配置文件中

由于这些配置文件最初是OSGi东西(请参见Bundle-RequiredExecutionEnvironment),因此这些配置文件存储在*.profile文件的org.eclipse.osgi插件/捆绑软件中,每个文件均包含可访问软件包的白名单。 (org.osgi.framework.system.packages),e。 G。这里JavaSE-1.8

如果您创建一个新的Java项目,则可以选择其中一个

  • 一个执行环境JRE ,它会为您导入e带来访问限制错误。 G。 sun.*个软件包或
  • 特定JRE

创建项目后,可以在 Project>属性:Java构建路径 的选项卡 Libraries 中更改所选的JRE。 >选择JRE,然后单击 编辑...

此外,由于Java 9引入了Java Platform Module System,因此JRE本身限制了对某些软件包的访问(并且文件rt.jar代替了文件modules)。 / p>