为了账号安全,请及时绑定邮箱和手机立即绑定

Intellij Maven java.lang.NoClassDefFoundError with

Intellij Maven java.lang.NoClassDefFoundError with

慕田峪9158850 2022-10-26 17:23:10
我正在尝试运行一个非常简单的程序,它在运行时需要一个类:import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;public class App {    public static void main(String[] args) {        YAMLFactory yf =  new YAMLFactory();    }}它正在编译,但我得到了Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/dataformat/yaml/YAMLFactory    at App.main(App.java:6)Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.dataformat.yaml.YAMLFactory运行罐子。我同时使用maven-assembly-plugin并maven-shade-plugin包含对 jar 的依赖项,它们都不适合我。我的 pom.xml:
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您可以像这样配置您的 Maven 程序集插件(您不需要其他插件)。这会将所有 .class 文件放入您的 jar 中。

mvn clean install生成你的jar,然后java -jar target/yourJar-jar-with-dependencies.jar执行。有关更多详细信息,请查看http://maven.apache.org/plugins/maven-assembly-plugin/

我给你留了一个改进的 maven 3 的 pom 文件(实际上问题出在这个版本的 maven 上不可用的 pluginManagement 标签)。您也不需要 maven jar 插件。

请找到这两个模式以获取完整的详细信息

https://maven.apache.org/xsd/maven-v3_0_0.xsd

http://maven.apache.org/xsd/maven-4.0.0.xsd

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>


    <groupId>App</groupId>

    <artifactId>App</artifactId>

    <version>1.0-SNAPSHOT</version>


    <properties>

        <maven.compiler.source>1.8</maven.compiler.source>

        <maven.compiler.target>1.8</maven.compiler.target>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.json</groupId>

            <artifactId>json</artifactId>

            <version>20180813</version>

        </dependency>

        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-core</artifactId>

            <version>2.9.8</version>

            <scope>compile</scope>

        </dependency>


        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-annotations</artifactId>

            <version>2.9.8</version>

        </dependency>


        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-databind</artifactId>

            <version>2.9.8</version>

        </dependency>


        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml -->

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml -->

        <dependency>

            <groupId>com.fasterxml.jackson.dataformat</groupId>

            <artifactId>jackson-dataformat-yaml</artifactId>

            <version>2.9.8</version>

            <scope>compile</scope>

        </dependency>




    </dependencies>

    <build>

            <plugins>

                <plugin>

                    <artifactId>maven-assembly-plugin</artifactId>

                    <version>3.1.0</version>

                    <configuration>

                        <finalName>your-jar-1.0</finalName>

                        <archive>

                            <manifest>

                                <addClasspath>true</addClasspath>

                                <mainClass>App</mainClass>

                            </manifest>

                        </archive>

                        <descriptorRefs>

                            <descriptorRef>jar-with-dependencies</descriptorRef>

                        </descriptorRefs>

                    </configuration>

                    <executions>

                        <execution>

                            <id>make-assembly</id>

                            <phase>package</phase>

                            <goals>

                                <goal>single</goal>

                            </goals>

                        </execution>

                    </executions>

                </plugin>

                <!-- Compile in Java 1.8 -->

                <!--<plugin>-->

                    <!--&lt;!&ndash; Build an executable JAR &ndash;&gt;-->

                    <!--<groupId>org.apache.maven.plugins</groupId>-->

                    <!--<artifactId>maven-jar-plugin</artifactId>       -->

                    <!--<version>3.1.0</version>-->

                    <!--<configuration>-->

                        <!--<archive>-->

                            <!--<manifest>-->

                                <!--<mainClass>App</mainClass>-->

                                <!--<addClasspath>true</addClasspath>-->

                            <!--</manifest>-->

                        <!--</archive>-->

                    <!--</configuration>-->

                <!--</plugin>-->

            </plugins>

    </build>


</project>


查看完整回答
反对 回复 2022-10-26
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信