0

我正在使用混合模块化和非模块化方法在 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 或将其从源代码转换为模块来工作?

4

1 回答 1

0

这是一个与 JDOM 相关的问题,我们将在下一个版本的 jOpenDocument 中看到我们可以做什么。

于 2019-10-09T13:35:03.730 回答