Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IntelliJ-Maven添加外部jar文件但java.lang.NoClassDefFoundError_Java_Maven_Intellij Idea - Fatal编程技术网

IntelliJ-Maven添加外部jar文件但java.lang.NoClassDefFoundError

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

我使用IntelliJ 11.0.7版(2020.1.3)创建了一个简单的maven项目,并通过

文件->项目结构->新建项目库->Java->选择我的jar->确定->确定

在该jar文件中,存在运行应用程序所需的所有依赖项

没有编译时错误,但当我运行maven项目时,它会引发以下异常:

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命令运行不正常,您可以参考此答案了解更多线索