java - 修复 Eclipse 中的模块 {a} 不会 "opens {package}"到模块 {B}

标签 java eclipse module

之前曾询问过错误module {a} does not“opens {package}” to module {B},其中 explanation and solution was provided .

解决方案是在运行 jar 文件时将以下 --add-opens VM 参数添加到命令行,如下所示: java -jar --add-opens=java.base/java.lang=ALL-UNNAMED some_jar_file.jar

我有一个运行 Java-11.0.6javafx-sdk-14 的 JavaFX 程序,该程序在 Eclipse 版本:2019-09 R (4.13. 0)。当我将项目导出为可运行的 jar 文件时,当我从命令提示符运行 jar 文件时,上述修复会起作用。

但是,当我尝试将 VM 参数修复应用于 Eclipse 以便可以在 Eclipse 内运行我的程序时,我得到原始 module {a} does not “opens {package}” to module {B }错误:

enter image description here

我是否误解了该修复,错误地使用了 eclipse VM 参数,或者这是 Eclipse 的问题?我的公司有 2020-06 版本的 Eclipse,我可以尝试一下,但由于模块是在 Java9 年前引入的,我怀疑它会有帮助。

注意:我已确保我的 Eclipse 配置为使用 Java 11 作为其 VM:

enter image description here

编辑 1:我的 Eclipse 命令行如下:C:\Program Files\Java\jdk-11.0.6\bin\javaw.exe --add-opens= java.base/java.lang=ALL-UNNAMED -Dfile.encoding=Cp1252 -p "C:\Users\BL89306\eclipse-workspace\cto_emi_aat\bin;C:\Program Files\Java\javafx-sdk-14\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-14\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-14\lib\javafx.fxml.jar ;C:\Program Files\Java\javafx-sdk-14\lib\javafx.graphics.jar;C:\Program Files\Java\javafx-sdk-14\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-14\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-14\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk -14\lib\javafx-swt.jar;C:\Users\BL89306\eclipse-workspace\cto_emi_aat\lib\com.ibm.mq.allclient-9.2.0.1.jar;C:\Users\BL89306\eclipse-workspace\cto_emi_aat\lib\gson-2.8.6.jar;C:\Users\BL89306\eclipse-workspace\cto_emi_aat\lib\ikonli-javafx-11.3.5-sources.jar;C:\Users\BL89306\eclipse-workspace\cto_emi_aat\lib\ikonli-javafx-11.3.5.jar;C:\Program Files\Microsoft JDBC DRIVER 6.0 for SQL Server\sqljdbc_6.0\enu\jre8\sqljdbc42.jar;C:\Users\BL89306\eclipse-工作区\cto_emi_aat\lib\jaxb-api-2.3.1.jar"-m AAT/com.thehartford.aat.gui.AATApp

最佳答案

--add-opens=java.base/java.lang=ALL-UNNAMED 打开 java.langjava.base 模块ALL-UNNAMED 模块,该模块是类路径上的所有内容。但类路径上什么都没有。如果您的所有代码都位于 AAT 模块中(带有 main 方法的类所在的位置),则为:

--add-opens=java.base/java.lang=AAT

关于java - 修复 Eclipse 中的模块 {a} 不会 "opens {package}"到模块 {B},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65094624/

相关文章:

java - 如何创建jar依赖?

java - 从eclipse中的方法定义跳转到方法调用【Java视角】

perl - 在 Path-Class-Dir 模块中创建目录树

module - 为什么操作数的顺序会影响范围?

python - 是否有任何 Python3 兼容模块来读取/写入 IPTC 数据?

java - 从 java 中的 ByteBuffer 获取字节数组

java - 如何让 Jersey 客户端在根请求实体周围写入 `[` 和 `]`?

java - Apache Kafka 获取特定主题的消费者列表

java - 格式化后拆分字符串并拼接的方法

java - Java/Eclipse 中系统设计的好工具?