在Java,与NoclassFoundError打交道
我的项目是使用Apache Maven Jar插件构建的 我在Maven管理的项目中使用Ini4j,在IDE上,每个人都可以正常工作。 但是,当我尝试在CMD中启动罐子时,如下所示: java -jar javapragram-1.0-snapshot.jar
我得到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/ini4j/Ini
at org.example.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: org.ini4j.Ini
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 1 more
这是.jar内部的subtest.mf:
Manifest-Version: 1.0
Class-Path: lib/ini4j-0.5.4.jar lib/maven-jar-plugin-3.2.2.jar lib/mav
en-plugin-api-3.1.0.jar lib/maven-model-3.1.0.jar lib/org.eclipse.sis
u.plexus-0.0.0.M2a.jar lib/cdi-api-1.0.jar lib/jsr250-api-1.0.jar lib
/javax.inject-1.jar lib/guava-10.0.1.jar lib/jsr305-1.3.9.jar lib/sis
u-guice-3.1.0-no_aop.jar lib/aopalliance-1.0.jar lib/org.eclipse.sisu
.inject-0.0.0.M2a.jar lib/asm-3.3.1.jar lib/maven-core-3.1.0.jar lib/
maven-settings-3.1.0.jar lib/maven-settings-builder-3.1.0.jar lib/mav
en-repository-metadata-3.1.0.jar lib/maven-model-builder-3.1.0.jar li
b/maven-aether-provider-3.1.0.jar lib/aether-spi-0.9.0.M2.jar lib/aet
her-impl-0.9.0.M2.jar lib/aether-api-0.9.0.M2.jar lib/aether-util-0.9
.0.M2.jar lib/plexus-interpolation-1.16.jar lib/plexus-classworlds-2.
4.2.jar lib/plexus-component-annotations-1.5.5.jar lib/plexus-sec-dis
patcher-1.3.jar lib/plexus-cipher-1.4.jar lib/maven-artifact-3.1.0.ja
r lib/file-management-3.0.0.jar lib/maven-shared-io-3.0.0.jar lib/mav
en-compat-3.0.jar lib/sisu-inject-plexus-1.4.2.jar lib/sisu-inject-be
an-1.4.2.jar lib/sisu-guice-2.1.7-noaop.jar lib/wagon-provider-api-2.
10.jar lib/maven-archiver-3.5.2.jar lib/commons-io-2.6.jar lib/common
s-compress-1.20.jar lib/plexus-archiver-4.2.7.jar lib/plexus-io-3.2.0
.jar lib/snappy-0.4.jar lib/xz-1.9.jar lib/maven-shared-utils-3.3.4.j
ar lib/plexus-utils-3.3.1.jar
Build-Jdk-Spec: 1.8
Created-By: Maven JAR Plugin 3.2.2
Main-Class: org.example.Main
在保持Maven时如何提供所有内容? 目的是构建.jar并在CMD中启动它,而不是在IDE
编辑中启动它:使用Apache Maven Shade插件解决了此问题,从而使您可以通过运行阴影JAR来解决问题。
My project is built using Apache Maven JAR Plugin,
I'm using ini4j inside my project managed by maven, on the IDE, everythin works fine.
But when i try to launch the JAR in the cmd as follow :
java -jar javaProgram-1.0-SNAPSHOT.jar
I get this error :
Exception in thread "main" java.lang.NoClassDefFoundError: org/ini4j/Ini
at org.example.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: org.ini4j.Ini
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 1 more
Here is the manifest.mf inside the .jar:
Manifest-Version: 1.0
Class-Path: lib/ini4j-0.5.4.jar lib/maven-jar-plugin-3.2.2.jar lib/mav
en-plugin-api-3.1.0.jar lib/maven-model-3.1.0.jar lib/org.eclipse.sis
u.plexus-0.0.0.M2a.jar lib/cdi-api-1.0.jar lib/jsr250-api-1.0.jar lib
/javax.inject-1.jar lib/guava-10.0.1.jar lib/jsr305-1.3.9.jar lib/sis
u-guice-3.1.0-no_aop.jar lib/aopalliance-1.0.jar lib/org.eclipse.sisu
.inject-0.0.0.M2a.jar lib/asm-3.3.1.jar lib/maven-core-3.1.0.jar lib/
maven-settings-3.1.0.jar lib/maven-settings-builder-3.1.0.jar lib/mav
en-repository-metadata-3.1.0.jar lib/maven-model-builder-3.1.0.jar li
b/maven-aether-provider-3.1.0.jar lib/aether-spi-0.9.0.M2.jar lib/aet
her-impl-0.9.0.M2.jar lib/aether-api-0.9.0.M2.jar lib/aether-util-0.9
.0.M2.jar lib/plexus-interpolation-1.16.jar lib/plexus-classworlds-2.
4.2.jar lib/plexus-component-annotations-1.5.5.jar lib/plexus-sec-dis
patcher-1.3.jar lib/plexus-cipher-1.4.jar lib/maven-artifact-3.1.0.ja
r lib/file-management-3.0.0.jar lib/maven-shared-io-3.0.0.jar lib/mav
en-compat-3.0.jar lib/sisu-inject-plexus-1.4.2.jar lib/sisu-inject-be
an-1.4.2.jar lib/sisu-guice-2.1.7-noaop.jar lib/wagon-provider-api-2.
10.jar lib/maven-archiver-3.5.2.jar lib/commons-io-2.6.jar lib/common
s-compress-1.20.jar lib/plexus-archiver-4.2.7.jar lib/plexus-io-3.2.0
.jar lib/snappy-0.4.jar lib/xz-1.9.jar lib/maven-shared-utils-3.3.4.j
ar lib/plexus-utils-3.3.1.jar
Build-Jdk-Spec: 1.8
Created-By: Maven JAR Plugin 3.2.2
Main-Class: org.example.Main
Any idea how i could provide everything while keeping maven?
The goal would be to build the .jar and to launch it in the cmd instead of runnig it in the IDE
EDIT : This problem has been solved using the Apache Maven Shade Plugin allowing you to fix the problem by running the shaded jar.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用Apache Maven Shade插件解决了此问题,使您可以通过运行阴影罐来解决问题。
This problem has been solved using the Apache Maven Shade Plugin allowing you to fix the problem by running the shaded jar.