eclipse 中的 JavaFX 和 luaj - java.lang.module.InvalidModuleDescriptorException: luajc.class 在顶级目录中找到
JavaFX and luaj in eclipse - java.lang.module.InvalidModuleDescriptorException: luajc.class found in top level directory
我必须将我的项目从 SWT 转换为 JavaFX。该项目充分利用了 luaj 来强制和执行 lua 脚本,并且在 swt 中运行良好。
但是javafx有区别。 Javafx 作为一个模块工作。
从那以后,我就和luaj有麻烦了。
尝试了两种不同的方法:
** luaj 在 class 路径中**
Eclipse 不再看到它(类型 org.luaj.vm2.[...] 不可访问)。尝试玩转订单但仍然无法正常工作。
使用 luaj 作为自动命名模块
我尝试作为用户库或直接作为外部 jar。
在这种情况下,eclipse 会看到 luaj 个包。但是当我 运行 时,我收到消息
引导层初始化出错
java.lang.module.FindException: 无法导出 E:\eclipse-workspace\Lib\luaj-3.0.1\lib\luaj-jse-3.0.1.jar 的模块描述符
原因:java.lang.module.InvalidModuleDescriptorException:在顶级目录中找到luajc.class(模块中不允许未命名的包)
我认为 lib 文件的命名有误。我有一个警告说“自动模块的名称 luaj.jse 不稳定”,但是当我尝试重命名它时,我有一个错误,因为 eclipse 搜索旧文件名。
这可能是原因?
我用jdk-16
这是我的模块信息...
module dusandbox {
requires javafx.graphics;
requires javafx.controls;
requires javafx.base;
requires javafx.fxml;
requires javafx.media;
requires javafx.swing;
requires javafx.swt;
requires javafx.web;
requires java.xml;
requires luaj.jse;
exports dusandbox;
exports dusandbox.setup;
exports dusandbox.obj;
opens dusandbox.setup to javafx.fxml;
opens dusandbox.obj to javafx.fxml;
}
虚拟机参数
--module-path "E:\eclipse-workspace\Lib\javafx-sdk-11.0.2\lib"
--add-opens javafx.graphics/com.sun.javafx.text=ALL-UNNAMED
.class路径
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="lib" path="E:/eclipse-workspace/Lib/luaj-3.0.1/lib/luaj-jse-3.0.1.jar">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="fxml/|picture/|pictures/" kind="src" path="src">
<attributes>
<attribute name="module" value="true"/>
<attribute name="add-exports" value="dusandbox/dusandbox.setup=dusandbox"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFx">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="E:/eclipse-workspace/Lib/javax.xml.bind.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
感谢您的帮助!我搜索了2天,我很困惑!
Edit 似乎 luaj 不能作为模块工作。我仍然坚持让它在 class 路径中工作...
已解决
我删除了模块信息并在模块路径中添加了所有 javafx 库。
我用
替换了 VM 参数
--module-path "E:\eclipse-workspace\Lib\javafx-sdk-11.0.2\lib"
--add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.web
请注意,您必须 select 在 add-modules 参数中要使用哪些 javafx 模块。
我必须将我的项目从 SWT 转换为 JavaFX。该项目充分利用了 luaj 来强制和执行 lua 脚本,并且在 swt 中运行良好。
但是javafx有区别。 Javafx 作为一个模块工作。
从那以后,我就和luaj有麻烦了。
尝试了两种不同的方法:
** luaj 在 class 路径中**
Eclipse 不再看到它(类型 org.luaj.vm2.[...] 不可访问)。尝试玩转订单但仍然无法正常工作。
使用 luaj 作为自动命名模块
我尝试作为用户库或直接作为外部 jar。
在这种情况下,eclipse 会看到 luaj 个包。但是当我 运行 时,我收到消息
引导层初始化出错
java.lang.module.FindException: 无法导出 E:\eclipse-workspace\Lib\luaj-3.0.1\lib\luaj-jse-3.0.1.jar 的模块描述符 原因:java.lang.module.InvalidModuleDescriptorException:在顶级目录中找到luajc.class(模块中不允许未命名的包)
我认为 lib 文件的命名有误。我有一个警告说“自动模块的名称 luaj.jse 不稳定”,但是当我尝试重命名它时,我有一个错误,因为 eclipse 搜索旧文件名。
这可能是原因?
我用jdk-16
这是我的模块信息...
module dusandbox {
requires javafx.graphics;
requires javafx.controls;
requires javafx.base;
requires javafx.fxml;
requires javafx.media;
requires javafx.swing;
requires javafx.swt;
requires javafx.web;
requires java.xml;
requires luaj.jse;
exports dusandbox;
exports dusandbox.setup;
exports dusandbox.obj;
opens dusandbox.setup to javafx.fxml;
opens dusandbox.obj to javafx.fxml;
}
虚拟机参数
--module-path "E:\eclipse-workspace\Lib\javafx-sdk-11.0.2\lib"
--add-opens javafx.graphics/com.sun.javafx.text=ALL-UNNAMED
.class路径
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="lib" path="E:/eclipse-workspace/Lib/luaj-3.0.1/lib/luaj-jse-3.0.1.jar">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="fxml/|picture/|pictures/" kind="src" path="src">
<attributes>
<attribute name="module" value="true"/>
<attribute name="add-exports" value="dusandbox/dusandbox.setup=dusandbox"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFx">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="E:/eclipse-workspace/Lib/javax.xml.bind.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
感谢您的帮助!我搜索了2天,我很困惑!
Edit 似乎 luaj 不能作为模块工作。我仍然坚持让它在 class 路径中工作...
已解决
我删除了模块信息并在模块路径中添加了所有 javafx 库。
我用
替换了 VM 参数--module-path "E:\eclipse-workspace\Lib\javafx-sdk-11.0.2\lib"
--add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.web
请注意,您必须 select 在 add-modules 参数中要使用哪些 javafx 模块。