【问题标题】:Class Not Found even when specifying full package path即使指定完整的包路径,也找不到类
【发布时间】: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


【解决方案1】:

发生这种情况通常是因为您的类路径设置不正确。尝试将类路径添加到java 调用以及javac 调用,例如java -cp foo.bar.jar path.to.HelloWorld

【讨论】:

    【解决方案2】:

    由于没有在 Java BuildPath 中指定正确的类源文件夹路径,有时也找不到类源 --> 源因为在项目需要时没有获取类文件。

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

    【讨论】:

      【解决方案3】:

      在终端试试这一行

      set classpath = .

      【讨论】:

        【解决方案4】:
        java -cp foo.bar.jar foo.bar.bla.HelloWorld
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-10
          • 2018-07-15
          • 2019-12-17
          • 2015-05-30
          • 1970-01-01
          • 2016-08-19
          • 1970-01-01
          相关资源
          最近更新 更多