我试图使用第三方程序包(称为'foo.bar')。它位于当前目录(foo.bar.jar)中的jar文件中。我试图运行下面的超级基本的“你好,世界”式的程序:即使指定完整程序包路径时也找不到类别
package foo.bar.bla;
import foo.bar.*;
import foo.bar.somethingelse.SomeException;
public class HelloWorld implements SomethingInFooBar {
public static void main(String[] args) throws SomeException {
System.out.println("Hello World!");
}
}
当我使用javac -cp foo.bar.jar HelloWorld.java
它编译就好了。
但是当我尝试运行它(使用java HelloWorld
),我总是得到NoClassDefFoundError (wrong name)
错误,与其中的类显然是谎言的/
- 分隔包路径(some/path/like/this/HelloWorld
)一起。但是,当我尝试使用完整路径(如其他问题和解决此问题的其他站点中所述)运行它时,它仍然不起作用(使用命令java path.it.gave.me.HelloWorld
)。
感谢您对这个n00b问题的深入了解。我应该停止依靠Eclipse这么多!
如果你用'java'执行你的类,你还需要在classpath中声明'foo.bar.jar'。所以:'java -cp foo.bar.jar HelloWorld'。 – vstm
Duh哎呀,我只是用HelloWorld试过,它不起作用,但它在我指定完整路径包时也有效('java -cp foo.bar.jar path.it.gave.me.HelloWorld') 。谢谢! –