如何使用第三方库(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