【发布时间】:2020-04-04 04:42:24
【问题描述】:
我有一个小程序(目前有六个*.java 文件,加上ini4j-0.5.4.jar 库)。它在 Eclipse 上运行良好,但我需要在没有图形功能的系统上编译和运行它,所以我为它构建了一个 javac 命令,从项目目录运行:
javac -d bin -classpath libs/ini4j-0.5.4.jar src/main/*.java
当它运行时,它会产生两行:
error: module not found: ini4j
1 error
我已经离开 Java 编程几年了,我只是在赶上模块等方面的变化。似乎这就是问题的根源:ini4j 文件是在模块出现之前编写的。我已经看到提示,有一种方法可以使模块化 Java 程序与非模块化组件一起工作,显然当我从 Eclipse GUI 运行它时它可以工作,但是哄javac 编译器接受它的方法让我难以理解.
如果有帮助,我在 Ubuntu 19.04 下使用 openjdk(和 javac)11.0.3。
底线:如何使用javac 命令行编译器将此非模块化 JAR 文件编译成新的(模块化、简单)Java 程序?
解决方案:在 cmets 和答案的帮助下,我找到了解决问题的方法,将 javac 命令行更改为:
javac -g -d bin --module-path libs/ini4j-0.5.4.jar src/main/*.java
现在编译时它不会给我任何问题。 :-) 仍在试图弄清楚如何从命令行实际运行它,但这是一个不同的主题。
感谢大家的帮助!
【问题讨论】:
-
不确定这是否有帮助,但似乎相关:Mix --class-path and --module-path in javac (JDK 9)
-
你有
module-info.java吗? -
也看看here