Eclipse 无法 运行 java 带有模块警告的项目

Eclipse can't run java project with module warning

我正在 运行使用 OpenJDK-14 安装 eclipse 4.16。我有一个简单的 java 项目,其中有一个包含 swt.jar 的 lib 文件夹。它已添加到项目属性 > Java 构建路径 > 库对话框中的模块路径中。当我在我的 class 中导入和使用 swt class 时,系统提示我向我的 module-info 文件添加一个条目。它添加了带有警告的“swt”:

Name of automatic module 'swt' is unstable, it is derived from the module's file name.

当我尝试 运行 将项目作为 java 应用程序时,我在控制台中收到此错误,但什么也没有 运行s:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module swt not found, required by ca.footeware.swt.converter

如果我将项目导出为包含依赖项的 运行nable jar,它会出现类似的警告。导出的 jar 确实 运行(但这不是一个方便的开发周期 :)

我在某处读到,对于 non-modular 罐子,可以使用 MANIFEST.MF header、Automatic-Module-Name。我破解了 swt.jar 并添加了值为 org.eclipse.swt 的 header,jar 的根包。我删除了 Requires swt;来自我的 module-info.java 并再次被提示从我的 class 添加一个带有 swt 导入的条目。这次虽然它输入了 Requires org.eclipse.swt;并且没有产生警告。当我尝试 运行ning 项目时,我得到了同样的错误:

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/craig/workspace/ca.footeware.converter.temperature.