如何将 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>

不起作用。我得到与没有标志相同的InaccessibleObjectExceptionmodule java.base does not "opens java.util" to unnamed module

&lt;j2se java-vm-args="--permit-illegal-access" version="9*"/&gt; 添加到 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/… &lt;j2se java-vm-args="--permit-illegal-access" version="9*"/&gt; 添加到 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 - 发布者和订阅者如何工作

如何(不)在Java 9+中使用Reactive Streams

Java如何将具体点的状态码绑定在按钮上,比如,正常为0,锁定为1,删除为9,锁定和删除走同一个方法?

如何将 Eclipse 中的 Maven 3.3.9 更改为 Maven 3.2.5?

40天后Java 11将推出的功能有哪些,它们与Java 9和10的不同之处是什么?

如何在 MACOS 上将 Java 从 9 降级到 8。 Eclipse 未与 Java 9 一起运行