如何将 Java 9 '--permit-illegal-access' 标志传递给 Webstart 应用程序?
Posted
技术标签:
【中文标题】如何将 Java 9 \'--permit-illegal-access\' 标志传递给 Webstart 应用程序?【英文标题】:How to pass the Java 9 '--permit-illegal-access' flag to a Webstart application?如何将 Java 9 '--permit-illegal-access' 标志传递给 Webstart 应用程序? 【发布时间】:2017-08-28 02:09:16 【问题描述】:我通过将--permit-illegal-access
标志传递给VM,使我的应用程序在JRE build 9-ea+163 上运行。现在我想用 Java Webstart 启动应用程序。第一次尝试
javaws -J--permit-illegal-access <JNLP-Url>
不起作用。我得到与没有标志相同的InaccessibleObjectException
和module java.base does not "opens java.util" to unnamed module
。
将<j2se java-vm-args="--permit-illegal-access" version="9*"/>
添加到 JNLP 没有帮助。
Webstart 是否支持--permit-illegal-access
标志?
我可以在 JNLP 文件中进一步指定标志吗?
顺便说一句,使用 Java 9
javaws https://docs.oracle.com/javase/tutorialJWS/samples/deployment/NotepadJWSProject/Notepad.jnlp
抛出 IllegalAccessException
和 -J--permit-illegal-access
也无济于事。
P.S.:将环境变量 JAVA_TOOL_OPTIONS
设置为 --permit-illegal-access
可以,但不是解决方案,因为无法访问客户端。
【问题讨论】:
这有帮助吗? ***.com/questions/3494787/…***.com/questions/1396426/…***.com/questions/40932530/…***.com/questions/22958842/… 将<j2se java-vm-args="--permit-illegal-access" version="9*"/>
添加到 JNLP 不起作用。将环境变量JAVA_TOOL_OPTIONS
设置为--permit-illegal-access
确实有效,但不是解决方案,因为无法访问客户端。客户端计算机上的部署设置也是如此。
【参考方案1】:
Java Web Start 不支持--permit-illegal-access
选项。需要打破封装的 JNLP 应用应使用精确选项,同时支持 --add-exports
和 --add-opens
。
【讨论】:
使用 [JDK-8172986] (bugs.openjdk.java.net/browse/JDK-8172986)java-vm-args="--add-opens=java.base/java.util=ALL-UNNAMED --add-exports=java.desktop/sun.awt=ALL-UNNAMED"
中描述的正确语法为我工作。谢谢!【参考方案2】:
这对我有用。将以下标志添加到 vm 参数:
java --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED -jar mySpringBootApp.jar
【讨论】:
以上是关于如何将 Java 9 '--permit-illegal-access' 标志传递给 Webstart 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何(不)在Java 9+中使用Reactive Streams
Java如何将具体点的状态码绑定在按钮上,比如,正常为0,锁定为1,删除为9,锁定和删除走同一个方法?
如何将 Eclipse 中的 Maven 3.3.9 更改为 Maven 3.2.5?