我正在使用混合模块化和非模块化方法在 Eclipse 2019-06 中使用 java/javafx 12 开发模块化 java 项目。由于运行时出现异常,无法让程序运行。
我需要使用混合模块化和非模块化方法,因为该程序需要外部库。它们中的大多数都可以作为模块使用,但开发人员并未将 jOpenDocument 作为模块提供。
我没有收到 Eclipse 的任何抱怨,除了“自动模块 jOpenDocument 的名称不稳定”,这应该不是问题。
当我启动程序时,出现以下异常:
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for C:\Users\ct\eclipse-workspace-2019-06\DMModule2\lib\jOpenDocument-1.4rc2.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: JDOMAbout$Info.class found in top-level directory (unnamed package not allowed in module)
我在模块路径中有所有外部 jar,模块信息文件如下所示。
该项目可以使用非模块化方法顺利运行,但我想继续使用模块。我发现这两个参考是针对同一种问题
使用 Java 11 在 Eclipse 中混合模块化和非模块化开发
使用 Maven 构建具有非模块化依赖项的 JDK 9 项目需要什么
但没有帮我解决。
jOpenDocument 的源代码可在https://jopendocument.org/download/jOpenDocument-src-1.4rc2.zip获得,因此通过添加 module-info 文件将 jar 更新为模块是可行的。我也尝试过,但没有成功,如果有人能做到这将有助于我认为的社区。
module dmmodule2 {
exports dmmodule;
exports gui;
// sql
requires transitive java.sql;
// Json
requires transitive org.glassfish.java.json;
// jOpenDocument
requires transitive jOpenDocument;
// JavaFX;
requires javafx.fxml;
requires transitive javafx.graphics;
requires transitive javafx.controls;
opens dmmodule to javafx.fxml;
opens gui to javafx.fxml;
}
有没有人这么好心地暗示我的模块化项目可以通过使用可用的 jOpenDocument 二进制 jar 或将其从源代码转换为模块来工作?