【问题标题】:Error while running jar from command prompt从命令提示符运行 jar 时出错
【发布时间】:2011-06-30 16:10:53
【问题描述】:

我正在使用 NetBeans IDE 编写一个 java 程序。当我从 NetBeans 运行该程序时,它运行良好,但是当我从命令提示符运行它时,我得到以下信息:

Exception in thread "main" java.lang.NoClassDefFoundError: javaapplication/Main
Caused by: java.lang.ClassNotFoundException: javaapplication.Main
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: javaapplication.Main. Program will exit.

我使用另一个程序 (myEclipse) 来构建程序,但发生了确切的事情,我只能从 IDE 运行该程序,而不是命令提示符。

【问题讨论】:

    标签: java exception cmd main


    【解决方案1】:

    嗯,javaapplication.Main 是不是应该是主类?如果不是,则可能是清单文件中的错误。

    如果它 是主类,请查看 jar 文件内部(例如,通过提取它)。寻找一个名为 javaapplication 的目录,其中应该有一个名为 Main.class 的文件。

    这两件事中有一个是错误的,但我们无法从这里真正分辨出它是什么——只有你可以。

    【讨论】:

    • 谢谢,我刚刚创建了另一个项目,复制并粘贴了代码,现在一切正常。
    【解决方案2】:

    这通常发生在您的 MANIFEST.MF 文件不正确时。它位于您的 *.jar 文件中。

    我的一个项目中的一个例子:

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 14.2-b01 (Sun Microsystems Inc.)
    Class-Path: lib/log4j-1.2.14.jar lib/mysql-connector-java-5.1.11-bin.jar
    Main-Class: at.package.to.main.class.MainClass
    

    有关更多信息,请参见此处: http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html http://en.wikipedia.org/wiki/Manifest_file

    更改您的 MANIFEST.MF 文件应该可以解决您的问题。

    编辑: 对“Jon Skeet”的回应:我假设您有一个带有

    的课程
    public static void main(String args[]){ ... }
    

    方法。如果您没有主类 - 忘记我的答案并创建一个主类;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      相关资源
      最近更新 更多