【问题标题】:How to Run Java Module class (java 9 jigsaw project) with third party library (jar files)?如何使用第三方库(jar 文件)运行 Java 模块类(java 9 jigsaw 项目)?
【发布时间】:2020-06-11 00:47:12
【问题描述】:

现在我正在尝试使用纯 java(无内置脚本)开发一个 Java 项目。我正在实现 Java 9 中的模块概念。在运行带有附加 jar 文件(第三方库)的 Java 项目(主类)时遇到了麻烦。我在编译时没有问题,但是当我尝试运行 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。还有其他方法吗?

而且我真的不知道类路径、模块路径和其他任何东西之间的区别。我总是尝试从模块路径运行它。

我从this linkthis link 得到了一些参考。这两个告诉我上面提到的命令。

谢谢!

【问题讨论】:

    标签: java java-9 java-module java-platform-module-system module-path


    【解决方案1】:

    所有非 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
    

    【讨论】:

    • 非常感谢!奇迹般有效。 :) 以前不知道这些东西存在.. 再次非常感谢你
    • 我记得在 Oracle 迁移文档之一中明确提到了这一点。 (可能是工具文档)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2015-06-10
    相关资源
    最近更新 更多