【发布时间】:2012-01-18 05:07:44
【问题描述】:
我正在尝试使用第三方包(称之为“foo.bar”)。它位于当前目录 (foo.bar.jar) 的一个 jar 文件中。我正在尝试运行以下超级基本的“hello-world”风格的程序:
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执行你的类,你还必须在类路径中声明foo.bar.jar。所以:java -cp foo.bar.jar HelloWorld. -
Duh 哎呀,我只用 HelloWorld 进行了尝试,但它不起作用,但当我指定完整路径包时它也起作用 (
java -cp foo.bar.jar path.it.gave.me.HelloWorld)。谢谢!
标签: java command-line compilation