作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当导出模块项目 B 的 JAR 文件时,我在 Eclipse 中遇到问题,该文件本身包含 jar 文件中包含的另一个模块 A。在这种情况下,当我尝试导入导出的模块时,我收到 java.lang.module.FindException。
在我的示例中,项目 A 是一个模块化项目,只有一个 AClass 类:
package a;
public class AClass {
public static void main(String[] args) {
System.out.println("From module A");
}
}
项目A的模块信息是:
module modulea {
exports a;
}
项目 B 也是一个模块化项目,包括项目 A 的 Jar 文件导出。它只包含一个类 BClass:
package b;
import a.AClass;
public class BClass {
public static void main(String[] args) {
AClass.main(args);
}
}
项目B的模块信息是:
module moduleb {
requires transitive modulea;
exports b;
}
当我运行项目 B 时,我得到了预期的结果:来自模块 A
项目C也是一个模块化项目,包括导出为项目B的Jar文件。项目B的导出如下图所示:
B jar文件的内容如下图所示:
项目 C 仅包含一个类 CClass:
package c;
public class CClass {
public static void main(String[] args) {
System.out.println("ok");
}
}
项目C的模块信息是:
module modulec {
requires moduleb;
}
当我运行项目C时,出现错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module modulea not found, required by moduleb
我认为问题出在项目C没有找到模块B所需的模块A,尽管模块A包含在项目B的jar的lib文件夹中。但我不知道如何解决此类问题。问题是:如何使用 Eclipse 将包含另一个模块 A 的模块化项目 B 导出到 jar 文件中?
eclipse :
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200
JVM:
openjdk version "13-BellSoft" 2019-09-17
OpenJDK Runtime Environment (build 13-BellSoft+33)
OpenJDK 64-Bit Server VM (build 13-BellSoft+33, mixed mode, sharing)
最佳答案
在您的情况下,B.jar
包含A.jar
(模块 A 加模块 B)。但是 Java 平台模块系统 (JPMS) 允许每个 JAR 只能有一个模块,而不是一个 JAR 中有多个模块。
您有以下两个选择:
A.jar
包含在 B.jar
中,并且在项目 C 中使用两个模块 JAR,A.jar
和 B.jar
通过 Modulepathmodule-info.java
文件(在本例中,包括B.jar
有效;如果您不使用 jlink
,那么 JPMS 的额外工作不会带来任何好处)关于java - 使用 eclipse 导出模块 B 并包含另一个模块 A 时未找到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58972863/
我是一名优秀的程序员,十分优秀!