Java 9第三方模块&xAB ;链接 »;,怎么,什么时候-&燃气轮机;java.lang.NoClassDefFoundError
请不要使用Maven、Gradle提供解决方案…我只寻找CLI解决方案。也没有基于jlink的解决方案 给定Java 9第三方模块&xAB ;链接 »;,怎么,什么时候-&燃气轮机;java.lang.NoClassDefFoundError,java,module,Java,Module,请不要使用Maven、Gradle提供解决方案…我只寻找CLI解决方案。也没有基于jlink的解决方案 给定Open_My_type_module-1.0.jar作为预先存在的编译Java 9模块: module Open_My_type_module { // module-info.java exports Open_My_type_package; opens Open_My_type_package; } 此模块中的代码仅声明以下类: 打开我的类型包。我的类型 我将此模
Open_My_type_module-1.0.jar作为预先存在的编译Java 9模块:
module Open_My_type_module { // module-info.java
exports Open_My_type_package;
opens Open_My_type_package;
}
此模块中的代码仅声明以下类:
打开我的类型包。我的类型
我将此模块重新使用到另一个模块中,如下所示:
module Access_My_type_module { // module-info.java
requires Open_My_type_module;
}
cd PRODUCTION_SOFTWARE
jar --create --verbose --file Access_My_type_module-1.0.jar --main-class com.X.Access_My_type_package.Main *
//业务代码(仅用于Main.java类中的测试):
编译成功基于以下行:
javac -d PRODUCTION_SOFTWARE --module-path THIRD_PARTY_MODULE src/main/java/com/X/Access_My_type_package/Main.java src/main/java/module-info.java
接下来,在执行之前,我将软件打包如下:
module Access_My_type_module { // module-info.java
requires Open_My_type_module;
}
cd PRODUCTION_SOFTWARE
jar --create --verbose --file Access_My_type_module-1.0.jar --main-class com.X.Access_My_type_package.Main *
打包似乎没有在最终可执行文件中打开“我的类型”模块-1.0.jar,但我检查了打包软件的内部:
jar --file=Access_My_type_module-1.0.jar --describe-module
显示(一切似乎正常):
最后,执行失败,原因是java.lang.NoClassDefFoundError
来自:
java --module-path THIRD_PARTY_MODULE -jar Access_My_type_module-1.0.jar
我相信--模块路径第三方\u模块
足以在执行时链接Open\u My\u type\u module-1.0.jar,但我一直感觉我的打包命令不稳定。除此之外,我确信我错过了关于Java9模块的一个关键问题…请帮助欢迎 解决方案(如下)的灵感来源于
对于Java模块,使用--module
而不是-jar
可以更好地控制执行。所以
java--模块路径第三方\模块--模块访问\我的\类型\模块
工作正常!
假设:Access\u My\u type\u module-1.0.jar
必须与Open\u My\u type\u module-1.0.jar
一起位于第三方\u module
中(为简单起见)。简而言之,java
在THIRD\u PARTY\u MODULE
目录中找到所有需要的东西。
请注意,--module
需要模块名称(即,访问我的\类型\模块
)和
不是jar文件名!
还请注意,Access\u My\u type\u module-1.0.jar
manifest在打包时已经用一个主类设置好了。。。如果不告诉java
,在执行时哪个类是主类
java --module-path THIRD_PARTY_MODULE -jar Access_My_type_module-1.0.jar