首页 > 解决方案 > 找不到链接的 Eclipse 项目的编译失败模块

问题描述

我在 Spring Tool Suite 4 中有两个 Maven 项目(基本上是 Eclipse,是吗?)。

这些项目是 leviaphonpfaudioleviaphon的构建路径将pfaudio项目添加到模块路径中。

leviaphon的模块信息如下(我使用 JavaFX 作为 GUI,Maven 似乎在处理 JavaFX 的依赖项时没有问题):

module leviaphon {
    requires transitive javafx.controls;
    requires javafx.fxml;
    requires transitive javafx.graphics;
    requires transitive pfaudio;
    opens com.adonax.leviaphon to javafx.fxml;
    exports com.adonax.leviaphon;
}

pfaudio的模块信息基本上是这样的:

module pfaudio {
    requires javafx.controls;
    requires transitive javafx.graphics;
    requires transitive java.desktop;
    exports com.adonax.pfaudio.packagethis;
    exports com.adonax.pfaudio.packagethat;
}

大约有 25 个包,这里不需要为了问这个问题而将它们全部列出,对吗?两个模块信息文件的内容主要由 IDE 给我的消息决定。我正处于这两个项目的所有错误和警告都消失的地步。

运行配置有一个“目标”条目,如下所示:clean javafx:run. 我没有看到任何地方可以pfaudio在运行配置中输入对模块的引用。(刚刚再看了一下,Source运行配置上有一个选项卡。我尝试添加项目pfaudio并运行,但我得到了同样的错误。链接的项目一般需要手动输入吗?)

当我执行运行配置时,我收到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile(default-compile) on project leviaphon: Compilation failure
[ERROR] /C:/Users/adona/dev/spring/projects/audio/myapp/src/main/java/module-info.java:[5,39] module not found: pfaudio

在 [5,29] 处引用的行是requires transitive pfaudio;

我猜我只是错过了一个配置步骤,但我花了很长时间弄清楚它可能是什么。似乎不是在 pom 文件中添加了另一个依赖项。当我尝试引用 groupId:com.adonax 和 artifactId:pfaudio 时,编译器反对它找不到该项目的 jar。但是未找到的 pfaudio 项目被放在 Build Configurations 的模块路径中。当我查看构建路径中的模块依赖项时,pfaudio 的“声明的依赖项”就在那里。

我的模块信息是否有问题阻止了 com.adonax.pfaudio 的可见性?

我什至要正确地构建它吗?我是否需要为 pfaudio 创建一个 jar 并使其成为依赖项?我不清楚这样做的正确方法 - Maven 将如何找到罐子?

此时的主要目标是能够使用 jlink 制作运行时映像。(目标:干净的 javafx:jlink)

但是,即使只是为组合项目制作一个 jar,我可以在其中给某人一个命令行和运行说明,这也是我难以完成的事情。这项技术在哪里被教授(特定于与 eclipse 一起使用)?

标签: javaeclipsemaven

解决方案


推荐阅读