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

时间:2017-12-05 04:06:31

标签: java java-9 getresource

我最近升级到JDK 9,Eclipse抱怨无法导入sun.misc.Launchersun.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文件夹中的所有文件。

2 个答案:

答案 0 :(得分:3)

从试图访问类的模块中的任何类调用Class.getResource都可以正常工作。

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

answer by shazin可能返回null的原因可能是ClassLoader成为getResource来电的来电者:

  当资源是包中的非“.class”资源时,

返回null   这不对来电者的模块开放。

由于ClassLoader属于您的模块可能未打开的模块java.lang中的包java.base

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

答案 1 :(得分:2)

可以在任何Class.getResource

上调用

Class方法

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

<强>更新

根据成员的反馈进行编辑