在Java,与NoclassFoundError打交道

发布于 2025-01-25 22:06:58 字数 2306 浏览 4 评论 0原文

我的项目是使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆橘 2025-02-01 22:06:58

使用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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文