它说它找不到的类是Tester.GUI.api.Test1
。你运行测试的目录是什么,Test1
代码在哪个目录?
如果您设置-classpath
变量,您可能还需要将当前目录包含在您的类路径中。所以,如果你原来的命令是
java -classpath C:\foo.jar;D:\bar1\bar2.jar org.junit.runner.JUnitCore Tester.GUI.api.Test1
你可以通过添加;.
您-classpath
选项的这样的末尾添加当前目录到类路径:
java -classpath C:\foo.jar;D:\bar1\bar2.jar;. org.junit.runner.JUnitCore Tester.GUI.api.Test1
这将工作,只要在Test1
类位于当前目录下的Tester\GUI\api
目录中。
在Java中设置类路径的一个棘手问题是,您不想为实际的.java文件所在的目录提供目录,而是想要提供可以在其下找到指定目录的目录代码中的软件包。
例如,如果我在一个包bar.baz
编译的类,Foo
,那么我应该有一个名为Foo.class
在一个名为baz
名为bar
另一个目录中的目录文件。如果我想包括Foo
在我的类路径,如果Foo.class
位于 C:\Users\Joe\Code\bar\baz\Foo.class
,那么我必须要么运行
java -classpath C:\Users\Joe\Code [main class goes here]
要不然我有我的目录更改为C:\Users\Joe\Code
和运行
java -classpath . [main class goes here]
我没有提到jar文件,因为我有很多jar,它已经在-classpath中指定,shuld我在src的.classpath文件中添加了一些东西?添加java测试类名称? – laura 2010-02-24 22:23:21
如果您的系统已经设置为将所有需要的jar文件包含在'CLASSPATH'环境变量中,那么您也可以完全省略'-classpath'选项。在这种情况下,你的命令就是'java org.junit.runner.JUnitCore Tester.GUI.api.Test1'。 – 2010-02-24 22:25:26
@laura:.classpath(您正在使用Eclipse或其他IDE?)将不会受到.bat文件的影响。这听起来就像你的'Test1'类在类路径中找不到。 @ Joe的建议应该可以帮助你追踪它(例如,如果你正在使用缺省输出文件夹“bin”的Eclipse,那么将'; bin /'添加到你的类路径列表中)。基本上,你想添加你的测试类正在被编译到的文件夹。 – Ash 2010-02-24 22:44:21