【问题标题】:NoClassDefFound when running a jar运行 jar 时出现 NoClassDefFounderror
【发布时间】:2012-09-05 21:51:21
【问题描述】:

我使用 IntelliJ 构建了一个 jar,正确设置了主类。

当我从命令行 (Windows) 运行“java -jar foo.jar”时,我得到一个声称主文件丢失的异常。主类看起来像:

package mypackage;

public class LockUtil {
  public static void main(String[] args) {
  ...

我收到以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: mypackage/LockUtil
Caused by: java.lang.ClassNotFoundException: mypackage.LockUtil
        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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: mypackage.LockUtil. Program will exit.

清单文件包含:

Manifest-Version: 1.0
Created-By: IntelliJ IDEA
Main-Class: mypackage.LockUtil

jar 包含适当的目录结构和 .class 文件。

【问题讨论】:

    标签: java jar noclassdeffounderror


    【解决方案1】:

    如果你做java -tf foo.jar,你会看到这样的东西吗?

    META-INF/
    META-INF/MANIFEST.MF
    mypackage/
    mypackage/LockUtil.class
    

    会不会是在某个地方存在另一个目录级别?

    您可以通过使用以下内容构建 jar 文件来确保 Java 知道主文件存在:

    jar cfe foo.jar mypackage.LockUtil mypackage/LockUtil.class
    

    【讨论】:

      【解决方案2】:

      您正在尝试执行mypackage.LockUtil,但您应该使用mypackage.locking.LockUtil(注意课程开头的package 语句。)。

      另一种可能是您移动了班级并忘记更新package 语句。

      【讨论】:

      • 抱歉,发错了——实际的包名是正确的……(我更新了问题)
      【解决方案3】:

      LockUtil 是否依赖于另一个不可解析的类,从而不允许 LockUtil 加载?

      【讨论】:

        【解决方案4】:

        看来你的包名是 mypackage.locking 而不仅仅是 mypackage

        【讨论】:

          【解决方案5】:

          您的清单中的主类定义似乎指向 mypackage/LockUtil 而不是 mypackage/locking/LockUtil。

          -瑞克

          【讨论】:

            猜你喜欢
            • 2010-11-28
            • 1970-01-01
            • 2013-04-26
            • 1970-01-01
            • 1970-01-01
            • 2023-04-08
            • 1970-01-01
            • 1970-01-01
            • 2021-09-28
            相关资源
            最近更新 更多