java - 找不到链接的 Eclipse 项目的编译失败模块
问题描述
我在 Spring Tool Suite 4 中有两个 Maven 项目(基本上是 Eclipse,是吗?)。
这些项目是 leviaphon和pfaudio。leviaphon的构建路径将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 一起使用)?
解决方案
推荐阅读
- shell - init.d 脚本不会在出错时重新运行 python 脚本
- powershell - 抓取监视器信息 Powershell
- sql - 通过 SQL 查询获取分组中的相关列
- java - 在退出 java 之前运行外部程序有时会失败
- ssl - Edge 无法识别自签名的受信任根证书
- android - APK 更新从文件系统中删除数据库文件
- java - 有人知道如何配置或扩展 lo4j2 以在删除后重新创建日志吗?
- c# - 使用剪贴板选择句子的一部分而不是整个句子
- amazon-web-services - AWS Cloudformation 嵌套模板
- xslt - xslt:有没有办法引用根节点?