java - Eclipse 无法运行带有模块警告的 java 项目
问题描述
我正在使用 OpenJDK-14 运行 eclipse 4.16。我有一个简单的 java 项目,其中有一个带有 swt.jar 的 lib 文件夹。它被添加到项目的“属性”>“Java 构建路径”>“库”对话框中的模块路径中。当我在我的类中导入和使用一个 swt 类时,系统会提示我在我的模块信息文件中添加一个条目。它添加了带有警告的“swt”:
Name of automatic module 'swt' is unstable, it is derived from the module's file name.
当我尝试将项目作为 java 应用程序运行时,我在控制台中收到此错误并且没有运行:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module swt not found, required by ca.footeware.swt.converter
如果我将项目导出为包含依赖项的可运行 jar,它会出现类似的警告。导出的 jar 确实可以运行(但这不是一个方便的开发周期 :)
我在某处读到,对于非模块化 jar,可以使用 MANIFEST.MF 标头 Automatic-Module-Name。我破解了 swt.jar 并添加了值为 org.eclipse.swt 的标头,即 jar 的根包。我删除了 Requires swt; 从我的 module-info.java 中,再次被提示从我的类中添加一个带有 swt 导入的条目。这次虽然进入 Requires org.eclipse.swt; 并且没有产生警告。当我尝试运行该项目时,我得到了同样的错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.eclipse.swt not found, required by ca.footeware.swt.converter
解决方案
我让它工作了!我的运行配置的 VM 参数现在是:
--module-path ca.footeware.converter:ca.footeware.converter.temperature:/home/craig/Downloads/swt.jar -m ca.footeware.converter/ca.footeware.converter.Converter
我在 linux 上,--module-path 分隔符应该是 :,而不是 ;。
注意我已经将运行配置的工作目录设置为 ${workspace_loc} 而不是默认的 ${workspace_loc:ca.footeware.converter} 以便我可以通过简单名称而不是完全限定名称来访问两个模块项目,例如 /home/克雷格/工作区/ca.footeware.converter.temperature。
推荐阅读
- java - 将 spring boot 从 2.1.0 升级到 2.2.2.RELEASE ,现在启动时出现异常
- google-cloud-dataflow - Apache Beam 未从订阅中删除无效元素
- python - HoloViews 创建插值彩色热图
- python - 意外的输出结果
- javascript - 使用带有 nodeList 的 .find() jquery 函数
- java - JUnit 测试/调用函数几次
- tensorflow - 张量流中的类型错误
- scala - 为什么并行 pi 估计比顺序 pi 估计慢?
- excel - 将 Excel 中的一系列单元格导出到 Word 并将 Word 文档另存为 Word 文件和 PDF 文件
- c# - 如果服务总线计数变为零,则发送邮件