首页  >  文章  >  Java  >  从命令行运行时,如何解决 Maven 中的“NoClassDefFoundError”问题?

从命令行运行时,如何解决 Maven 中的“NoClassDefFoundError”问题?

Susan Sarandon
Susan Sarandon原创
2024-10-27 04:01:02820浏览

How can I resolve the

通过 Shade 插件解决 NoClassDefFoundError 的依赖关系

在第一次使用 Maven 时,Eclipse 和命令行使用之间可能会出现不一致,原因是依赖管理。尽管在 Eclipse 中成功创建了 Maven 项目并添加了依赖项,但通过命令行执行项目可能会导致 NoClassDefFoundError。

默认情况下,Maven 会单独打包依赖项,并且不会将它们包含在编译的 JAR 文件中。此遗漏会导致 Java VM 在执行期间尝试定位库类时失败。

maven-shade-plugin 提供了一种更有效的解决方案,而不是手动将库添加到类路径中。它创建一个“uber-JAR”,将应用程序类与所需的库代码组合在一起。

要实现此目的,请将以下插件配置添加到您的 POM 中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>

添加此配置后,重新运行以下命令:

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App

有关高级配置选项,例如指定包含的 JAR 或可执行 JAR 文件,请参阅 maven-shade-plugin 网站上的“示例”部分。

以上是从命令行运行时,如何解决 Maven 中的“NoClassDefFoundError”问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn