获取重新资源包“;com.sun.swing.internal.plaf.metal.resources.metal“;在Java10中
我试图让一个运行的Java8应用程序在java10下运行获取重新资源包“;com.sun.swing.internal.plaf.metal.resources.metal“;在Java10中,java,swing,resourcebundle,java-platform-module-system,java-10,Java,Swing,Resourcebundle,Java Platform Module System,Java 10,我试图让一个运行的Java8应用程序在java10下运行 ResourceBundle bundle1 = ResourceBundle.getBundle ( "com.sun.swing.internal.plaf.metal.resources.metal" ); 在Java 8中,一切正常,但在java10中,我得到以下消息: 原因:java.lang.IllegalAccessException:无法加载未命名模块 组件中的com.sun.swing.internal.plaf.me
ResourceBundle bundle1 = ResourceBundle.getBundle ( "com.sun.swing.internal.plaf.metal.resources.metal" );
在Java 8中,一切正常,但在java10中,我得到以下消息:
原因:java.lang.IllegalAccessException:无法加载未命名模块
组件中的com.sun.swing.internal.plaf.metal.resources.metal java.desktop 因此,我阅读了一些关于jigsaw的内容,并发现需要添加以下JavaVm属性:
--add-opens=java.desktop/com.sun.swing.internal.plaf.metal.resources=ALL-UNNAMED
--add-exports=java.desktop/com.sun.swing.internal.plaf.metal.resources=ALL-UNNAMED
但是即使使用这些属性,我也会遇到同样的错误。
com.sun。
请注意:不应该使用来自“com.sun.*”和“sun.*”包的类。
@andrewhompson我知道不应该使用它们,但是向JavaVM添加解释的属性应该是可以访问的,但是它们不应该被访问,这就是我在这里问这个问题的原因。com.sun.swing.internal.plaf.metal.resources.metal需要无条件开放,这意味着所有模块都需要开放。在命令行上没有办法做到这一点。@AlanBateman谢谢你的回答,但我该怎么做?@AlanBateman,经过多次尝试和错误,我发现--add opens=java.desktop/com.sun.swing.internal.plaf.metal.resources=ALL-UNNAMED和ResourceBundle=ResourceBundle.getBundle(“com.sun.swing.internal.plaf.metal.resources.metal”,Object.class.getModule())可以工作,但我不明白为什么使用ResourceBundle 2=ResourceBundle.getBundle(“com.sun.swing.internal.plaf.metal.resources.metal”)不能工作