IntelliJ-Maven添加外部jar文件但java.lang.NoClassDefFoundError
我使用IntelliJ 11.0.7版(2020.1.3)创建了一个简单的maven项目,并通过 文件->项目结构->新建项目库->Java->选择我的jar->确定->确定 在该jar文件中,存在运行应用程序所需的所有依赖项 没有编译时错误,但当我运行maven项目时,它会引发以下异常:IntelliJ-Maven添加外部jar文件但java.lang.NoClassDefFoundError,java,maven,intellij-idea,Java,Maven,Intellij Idea,我使用IntelliJ 11.0.7版(2020.1.3)创建了一个简单的maven项目,并通过 文件->项目结构->新建项目库->Java->选择我的jar->确定->确定 在该jar文件中,存在运行应用程序所需的所有依赖项 没有编译时错误,但当我运行maven项目时,它会引发以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProc
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
添加这个jar之后,它会抛出关于下一个丢失jar的异常,同样地,当我添加了该jar中使用的所有依赖项时,一切都正常
当我添加到jar时,是否有任何方法可以自动生成所有依赖项并从jar添加到外部库?
在该jar文件中,存在运行应用程序所需的所有依赖项。
您确定所有依赖项都存在吗?您的下一个语句是,在添加这个jar之后,它会抛出关于下一个缺少的jar的异常,同样,当我添加了这个jar中使用的所有依赖项时,一切都正常。
您的jar文件是否托管在maven存储库中?如果是,只需在maven
pom.xml
文件中声明它,它将管理所有可传递的依赖项。如果它不在maven存储库中,则需要运行mvn install
命令将其安装到本地maven存储库中,稍后在pom.xml
文件中引用它。如果您正确地打包jar文件,其中包含正确的pom.xml
,它也会自动解决您的可传递依赖关系。最后,我在生成jar文件的pom.xml中添加了这个
要让Maven从项目中构建胖JAR,必须在项目的POM文件中包含胖JAR构建配置。通过在POM文件的plugin部分中包含Maven汇编插件,可以配置Maven从项目构建胖JAR。Maven指的是作为程序集构建的输出产品。因此命名为maven汇编插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<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>
org.apache.maven.plugins
基本上,您需要创建一个“一体式”jar,将所有依赖项添加到可执行jar中,或者需要为所有jar提供类路径。您还需要在maven中定义依赖项(库),而不是IntelliJ。是的,所有依赖项都存在于jar文件中的pom.xml
。不,它不在maven repo中托管。我也运行了mvn install
命令,但它没有安装可传递的依赖项。这意味着您的install命令运行不正常,您可以参考此答案了解更多线索