Java 运行jar时发现NoClassDef
我使用IntelliJ构建了一个jar,正确设置了主类 当我从命令行(Windows)运行“java-jar foo.jar”时,我得到一个异常,声称主文件丢失。主类类似于:Java 运行jar时发现NoClassDef,java,jar,noclassdeffounderror,Java,Jar,Noclassdeffounderror,我使用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:
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文件。您正在尝试执行
mypackage.LockUtil
,但是您应该使用mypackage.locking.LockUtil
(注意类开头的package
语句)
另一种可能是您移动了类,忘记了更新
包
语句。您试图执行mypackage.LockUtil
,但您应该使用mypackage.locking.LockUtil
(注意类开头的包
语句)
另一种可能是您移动了类,忘记了更新
包语句。您的包的名称似乎是mypackage.locking,而不仅仅是mypackage您的包的名称似乎是mypackage.locking,而不仅仅是mypackage清单指向的是mypackage/LockUtil,而不是mypackage/locking/LockUtil
-Rick清单中的主类定义似乎指向mypackage/LockUtil,而不是mypackage/locking/LockUtil
-里克如果你使用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
如果您使用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
LockUtil是否依赖于另一个不可解析的类,从而不允许加载LockUtil?LockUtil是否依赖于另一个不可解析的类,从而不允许加载LockUtil?抱歉,这是发布中的一个错误-尽管实际的包名是正确的。。。(我更新了问题)对不起,这是一个错误的张贴-实际的包裹名称是正确的,虽然。。。(我更新了问题)