使用包从命令行运行java:NoClassDefFoundError

时间:2014-02-24 14:58:34

标签: java command-line packages

我有一个功能齐全的Java程序,我现在试图将其放入一个包中,而不是将它放在默认包中。所有.java文件都在mymap包中,我正在尝试在MyMapTest.java文件中运行黑盒测试。问题是我现在不知道如何在命令行中正确运行它,因为我已经将它放在一个包中。我试图谷歌寻找答案而陷入困境。

我可以编译:

javac -cp "../junit.jar" *.java;

但是当我尝试像以前那样运行它时......

java -cp .:../junit.jar org.junit.runner.JUnitCore MyMapTest

我的所有测试都收到错误java.lang.NoClassDefFoundError: mymap/MyMap。我想问题是,我不知道我是不是正确地包括mymap,也许是在类路径中?

同样,我在MyMapWhiteBoxTest.java中也有白盒测试,此文件也在mymap包中。我无法弄清楚如何正确运行这些测试。试着以同样的方式运行它,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: MyMapWhiteBoxTest (wrong name: mymap/MyMapWhiteBoxTest)

对于这两种情况,我都试过mymap/FILE或者在类路径中也包含了包,但是我肯定错过了一些东西。

2 个答案:

答案 0 :(得分:0)

如果MyMapTest类中存在main(),则可以尝试以下命令:

java -cp .:../junit.jar org.junit.runner.JUnitCore myMap.MyMapTest

答案 1 :(得分:0)

编译后:(javac -cp "../junit.jar" *.java;)你现在的目录有什么?你应该有./myMap/MyMapTest.class文件。