如何解决Eclipse无法运行带有模块警告的Java项目
我正在使用OpenJDK-14运行Eclipse 4.16。我有一个简单的Java项目,其中有一个带swt.jar的lib文件夹。它已添加到项目的“属性”>“ Java构建路径”>“库”对话框中的modulepath中。当我在类中导入并使用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导入的类中的条目。这次虽然进入了Require 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/craig/workspace/ca.footeware.converter.temperature。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。