【问题标题】:Why am I getting a ClassNotFoundException in a java application?为什么我在 Java 应用程序中得到 ClassNotFoundException?
【发布时间】:2013-05-19 00:22:08
【问题描述】:

我收到一条错误消息,指出 java.lang.NoClassDefFoundError: usemathobject/Main,但我不确定为什么会收到它。

在进行了一些搜索后,我找到了一个处理此错误的thread。在那个线程中,它说我需要修改 MANIFEST.MF 文件,但它没有向我清楚地解释如何修改该文件。它指定在命令行中放置什么,而不是在MANIFEST.MF 文件中放置什么。我也尝试添加

Main-Class: "C:\Users\MyName\Documents\NetBeansProjects\UseMathObject\src\usemathobject\UseMathObject.java"

Manifest.mb,正如https://blogs.oracle.com/olaf/entry/jdev_including_a_classpath_in 所建议的那样,但这没有用。

我在Windows Vista 上使用NetBeans IDE 6.9.1

【问题讨论】:

    标签: java netbeans


    【解决方案1】:
    Main-Class: usemathobject.UseMathObject
    

    您提供包和类名,而不是文件路径。

    【讨论】:

    • 你如何开始你的申请?
    • 我从 Windows 开始菜单打开了 NetBeans。然后我点击“Clean and Build Main Project”按钮,然后点击“Run Main Project”按钮。
    • 包含public static void main 方法的类位于名为UseMathObject 的类中,该类位于名为usemathobject 的包中,是吗?请记住,资本化在这里很重要。也许您可以在代码中提供主类的精简版本?
    • 是的,我在“UseMathObject”类中有“public static void main(String[] args)”。我不知道如何知道我的包叫什么。
    • 那么,UseMathObject.java 文件中的第一行是什么?
    【解决方案2】:

    这是为捆绑到可执行 jar 文件中的独立应用程序设置入口点的方法。使用以下选项会创建或覆盖清单文件中的 Main-Class 属性值。此选项可在创建 jar 文件或更新 jar 文件时使用。此选项在不编辑或创建清单文件的情况下指定应用程序入口点。

    例如,此命令创建 Main.jar,其中清单中的 Main-Class 属性值设置为 Main:

    jar cfe Main.jar Main Main.class

    java 运行时可以通过运行以下命令直接调用此应用程序:

    java -jar Main.jar

    【讨论】:

      【解决方案3】:

      我认为这里的问题是你不理解你在做什么,你在随机尝试人们告诉你的事情......而不理解他们所说的意思。而且您不理解错误消息告诉您的内容。

      我认为您最好尝试了解 Java 的包、类路径和 jar 文件机制是如何工作的。阅读 Oracle 教程的以下部分:

      一旦您阅读并理解了这些部分,这一切都会变得有意义......您将能够找出您做错了什么以及如何解决它。

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 1970-01-01
        • 2023-01-02
        • 2019-09-08
        相关资源
        最近更新 更多