【问题标题】:Why do I get a NoClassDefFoundError when trying to run my application?为什么在尝试运行我的应用程序时会收到 NoClassDefFoundError?
【发布时间】:2011-08-15 19:09:32
【问题描述】:

好的,所以我正在制作一个简单的 Java 类,它会简单地打印出“Hello!”。代码如下:

public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("Hello!");
    }
}

我通过命令提示符编译了这个类,然后,当我想运行它时,它给了我一个 NoClassDefFoundError 提示类路径有问题。这真的很愚蠢,因为它是一个类程序。我尝试了很多方法,但似乎都无法解决问题。

我该如何解决这个问题?

【问题讨论】:

  • 你执行了哪些命令来编译和运行?
  • @Agadoo:如果 Jon 的回答帮助您解决了问题,请接受(使用旁边的复选标记按钮)。这有助于我们知道没有更多的事情要做。

标签: java noclassdeffounderror


【解决方案1】:

您尚未展示如何运行代码。我猜你跑了:

java Hello.class

它试图运行一个名为Hello.class。该类刚刚命名为Hello,因此您需要:

java Hello

如果您没有设置 CLASSPATH 环境变量,那应该没问题。否则,要么将其设置为包含. 的路径,要么在命令行中指定:

java -cp . Hello

当然,这是假设您首先编译代码,使用如下命令:

javac Hello.java

【讨论】:

  • 谢谢你!我真傻,哈哈……我做了一百万次,但出于某种原因,这次我忘了我应该省略 .class
【解决方案2】:

您设置了环境变量 CLASSPATH,但它不包含“.” (点)表示当前目录(默认情况下)。像这样运行:

java -cp . Hello

那是“java space dash cp space dot space Hello”。

一旦你通过“Hello, World”,你会发现设置类路径一直都是必要的——无论是像这样手动(很少,在现实世界中)还是在启动脚本中,构建工具,或 IDE。

使用 CLASSPATH 环境变量是 Java 早期遗留下来的一种不好的做法。通常,您会发现是 Apple 的 QuickTime 安装程序将其设置为某些内容。你不应该使用或依赖这个变量。

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 2013-01-16
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多