如何使用第三方库(jar 文件)运行 Java 模块 class (java 9 jigsaw 项目)?
How to Run Java Module class (java 9 jigsaw project) with third party library (jar files)?
现在我正在尝试使用纯 java(无内置脚本)开发一个 Java 项目。我正在实施 Java 9 中的模块概念。当涉及 运行 一个 Java 项目(主 class)和附加 jar 文件时,我遇到了麻烦(第三方库)。编译时我没有遇到任何问题,但是当我尝试 运行 时 java 它无法按预期 运行。
我可以通过执行这个命令来编译这个项目(javaFiles.txt 包含我想要编译的 java 文件):
javac --module-path lib -d newout --module-source-path src @javaFiles.txt
但是当我尝试使用此命令 运行 已编译的 .class 文件时:
java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct
我收到这个错误,好像这是一个错误的命令:
$ java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct
Usage: java [options] <mainclass> [args...]
(to execute a class) or java [options] -jar <jarfile> [args...]
(to execute a jar file)
...
我正在使用 ubuntu。还有其他方法吗?
而且我真的不知道 classpath、modulepath 等等之间的区别。我总是尝试从模块路径 运行 这个。
我从 this link and this link 那里得到了一些参考资料。那两个告诉我上面提到的命令。
谢谢!
所有非 Windows 系统中的路径分隔符都是冒号 (:
),而不是分号 (;
)。你需要改变这个:
java --module-path newout;libs
对此:
java --module-path newout:libs
Unix shell 使用 ;
分隔两个连续的命令。所以你原来的行实际上是试图执行这两个命令:
$ java --module-path newout
$ libs --module com.example.trial/com.example.trial.CreateProduct
现在我正在尝试使用纯 java(无内置脚本)开发一个 Java 项目。我正在实施 Java 9 中的模块概念。当涉及 运行 一个 Java 项目(主 class)和附加 jar 文件时,我遇到了麻烦(第三方库)。编译时我没有遇到任何问题,但是当我尝试 运行 时 java 它无法按预期 运行。
我可以通过执行这个命令来编译这个项目(javaFiles.txt 包含我想要编译的 java 文件):
javac --module-path lib -d newout --module-source-path src @javaFiles.txt
但是当我尝试使用此命令 运行 已编译的 .class 文件时:
java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct
我收到这个错误,好像这是一个错误的命令:
$ java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct
Usage: java [options] <mainclass> [args...]
(to execute a class) or java [options] -jar <jarfile> [args...]
(to execute a jar file)
...
我正在使用 ubuntu。还有其他方法吗?
而且我真的不知道 classpath、modulepath 等等之间的区别。我总是尝试从模块路径 运行 这个。
我从 this link and this link 那里得到了一些参考资料。那两个告诉我上面提到的命令。
谢谢!
所有非 Windows 系统中的路径分隔符都是冒号 (:
),而不是分号 (;
)。你需要改变这个:
java --module-path newout;libs
对此:
java --module-path newout:libs
Unix shell 使用 ;
分隔两个连续的命令。所以你原来的行实际上是试图执行这两个命令:
$ java --module-path newout
$ libs --module com.example.trial/com.example.trial.CreateProduct