我有 .java 文件及其 .class 文件,以及 junit 测试文件,以及 junit-4.10.jar 和 hamcrest-core-1.3.jar 位于同一文件夹中。我正在尝试通过执行以下操作来构建它:
javac ErrorTest*.java
我收到很多错误提示
error: package org.junit does not exist
然后,当我尝试使用以下命令使用/usr/share/java 文件夹中的 junit 文件时:
javac -cp /usr/share/java/* ErrorTest*.java
我收到以下错误:
javac: invalid flag: /usr/share/java/ant-antlr-1.9.6.jar Usage: javac use -help for a list of possible options
如何构建并运行这些 ErrorTest.java junit 文件?
编辑:好吧,我明白了,但我不明白为什么。
以下给出了错误:
javac -classpath /path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
以下命令生成所需的 .class 文件:
javac -classpath .:/path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
谁能解释一下为什么“.:”有效?非常感谢。
最佳答案
因为,Java CLASSPATH指向“.”
表示的当前目录,并且它会在当前目录中查找类。
如果我们在 CLASSPATH 变量中定义了多个目录,Java 将从第一个目录开始查找类,如果在第一个目录中没有找到指定的类,则只查找第二个目录。借助 ":"
你已经设置了类路径
javac -classpath .:/path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
因此使用此命令您可以在类路径中设置多个目录。
JVM 按照 CLASSPATH 变量中列出的顺序搜索目录。
在您的情况下,当前目录中似乎存在一些类,因此如果您未在类路径中提供当前目录,JVM 将在第二个路径中搜索,然后在第三个路径中搜索,但所需的类不存在,因此似乎它不起作用
关于java - 使用命令行构建和运行 junit 测试文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39783809/