【问题标题】:Need help with java programming!在java编程方面需要帮助!
【发布时间】:2011-10-04 01:34:42
【问题描述】:

我是 java 新手,我刚刚制作了我的第一个程序:HelloWorld,在我编译它之后我尝试运行它,它给了我这个错误:

线程“main”中的异常 java.lang.NoClassDefFoundError: HelloWorld 引起:java.lang.ClassNotFoundException: HelloWorld at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到 主类:HelloWorld。程序将退出。

我使用的是 ubuntu 10.04 版本,我用 geany 制作了程序,并在终端中使用命令javac HelloWorld.java 编译它。 然后我用命令在终端中运行它:java HelloWorld,然后出现上述错误。 我的HelloWorld.java 文件如下所示:

public class  HelloWorld {

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

那么我的HelloWorld.class 文件如下所示:

public static void main(string[] args)

【问题讨论】:

  • 如果 HelloWorld.class 在您当前的工作目录中,java -classpath . HelloWorld 应该可以工作。

标签: java ubuntu-10.04


【解决方案1】:

您需要直接从包含 .class 文件的目录中运行 java 命令,或者您需要定义类路径,即 JVM 可以找到您编译的 Java 类的位置。试试:

java -classpath <directory> HelloWorld

&lt;directory&gt; 是包含您的 HelloWorld.class 文件的目录的(相对)路径。

【讨论】:

  • 我尝试输入:java -classpath '/home/(user)/Desktop/java1' HelloWorld 但我给了我这个错误:线程“main”中的异常 java.lang.ClassFormatError: Incompatible magic value 1886741100 在 java.lang.ClassLoader.defineClass(ClassLoader.java:634) 的 java.lang.ClassLoader.defineClass1(Native Method) 的 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 的类文件 HelloWorld 中。 net.URLClassLoader.defineClass(URLClassLoader.java:277) 在 java.net.URLClassLoader.access$000(URLClassLoader.java:73) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:212)
【解决方案2】:

检查您的系统上安装了哪些 JVM。我对 OpenJDK 有同样的问题。删除它并安装 Oracle JDK 后,问题就消失了。您还可以在 Project > Properties > Build > Execute Commands 中指定正确的 JDK 路径。例如,$JAVA_HOME/bin/java "%e" 用于执行命令。

【讨论】:

    【解决方案3】:

    当您运行程序时,您可能正在输入:

    java HelloWorld.class
    

    而不是

    java HelloWorld
    

    当我尝试它时,它按预期工作,除了当我包含“.class”时,它会导致它给出你粘贴的错误。

    【讨论】:

      【解决方案4】:

      根据您对 Jeen Broekstra 解决方案的回复,我建议您查看您的代码中的“倾斜”引用 - See here

      然后尝试编译:javac HelloWorld.class
      并运行:java -classpath '/home/(user)/Desktop/java1' HelloWorld
      再次。

      【讨论】:

        【解决方案5】:

        我刚刚在 Geany 遇到了同样的问题。我意识到我点击的是“构建”选项(在我的工具栏上,它看起来像一块砖)而不是“编译”(蓝色多面体转换为红色球体)。

        【讨论】:

          猜你喜欢
          • 2013-12-12
          • 2011-08-22
          • 2015-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-08
          • 1970-01-01
          相关资源
          最近更新 更多