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
的原因可能是 ClassLoader
是 getResource
调用的调用者:
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
的分辨率针对命名和未命名模块进行了进一步拆分。
我最近升级到 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("/");
null
的原因可能是 ClassLoader
是 getResource
调用的调用者:
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
的分辨率针对命名和未命名模块进行了进一步拆分。