2011-12-12 67 views
2

我试图使用第三方程序包(称为'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这么多!

+4

如果你用'java'执行你的类,你还需要在classpath中声明'foo.bar.jar'。所以:'java -cp foo.bar.jar HelloWorld'。 – vstm

+0

Duh哎呀,我只是用HelloWorld试过,它不起作用,但它在我指定完整路径包时也有效('java -cp foo.bar.jar path.it.gave.me.HelloWorld') 。谢谢! –

回答

2

一般情况下,这是因为您的类路径没有正确设置。尝试将类路径添加到java呼叫以及javac呼叫,例如java -cp foo.bar.jar path.to.HelloWorld

0

尝试在终端

此行set classpath = .

-1
java -cp foo.bar.jar foo.bar.bla.HelloWorld 
1

有时候类人士还没有找到,因为不指定合适的一个源文件夹路径在Java构建路径 - >源代码,因为没有得到类文件时它需要你的项目。

这就是为什么也是可能的。

相关问题