在 Java 9 中如何针对 jar 文件进行编译?

How do you compile against a jar file in Java 9?

Java 9 引入了模块的概念,它没有明确地替换jar文件,但是旧的--classpath选项似乎没有了

命令javac --help不再提及类路径。

我正在尝试针对 JUnit 编译一些学生作业:

> javac *.java --classpath junit.jar

但是我遇到了各种各样的错误,这取决于我的尝试。对于上面的例子:

javac: invalid flag: --classpath

我的 Java 版本是:

> java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

我不是在尝试使用模块,只是一个 .jar 文件,我可以通过指定 libs 文件夹将其包含在 IntelliJ 中。

编辑: 我真正的问题是我没有包括正确的罐子。针对 IntelliJ 的默认 JUnit5 配置进行编译:

 javac -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\junit-jupiter-api-5.0.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\opentest4j-1.0.0.jar" *.java

你拼错了选项。根据 javac options page for Java 9:

--class-path path , -classpath path, or -cp path

Specifies where to find user class files and annotation processors. This class path overrides the user class path in the CLASSPATH environment variable.

出于某种原因,如果您使用两个连字符选项 --,“类路径”中有一个连字符:--class-path。一个连字符选项 - 在“classpath”中没有连字符:-classpath.

以下任何一个都有效:

javac *.java --class-path junit.jar

javac *.java -classpath junit.jar

javac *.java -cp junit.jar