JDK 9 个不安全导入 sun.misc.Launcher

JDK 9 unsafe import sun.misc.Launcher

我最近升级到 JDK 9,Eclipse 抱怨无法导入 sun.misc.Launcher。看来 sun.misc.Launcher 是不安全的。 我正在寻找替代方案来替换我项目中的这行代码。

final URL url = Launcher.class.getResource("/");

如有任何帮助,我们将不胜感激。

更新:以上代码块的更完整版本是:

final URL url = Launcher.class.getResource("/");
final File fs = new File(url.toURI());
for (File f : fs.listFiles()) {
     System.out.println(f.getAbsolutePath());
}

这是在IDE中启动程序时打印src文件夹中的所有文件。

Class.getResource 方法可以在任何 Class

上调用
final URL url = ClassInTheCurrentModule.class.getResource("/");

更新

根据会员反馈编辑

从正在尝试访问 class 的模块中的任何 class 调用 Class.getResource 应该可以正常工作。

final URL url = ClassInTheCurrentModule.class.getResource("/");

可能 return null 的原因可能是 ClassLoadergetResource 调用的调用者:

returns null when the resource is a non-".class" resource in a package that is not open to the caller's module.

因为 ClassLoader 属于模块 java.base 中的包 java.lang,您的模块可能未打开。

此外,请注意 getResource 的分辨率针对命名和未命名模块进行了进一步拆分。