IntelliJ运行正常,命令行启动报错NoClassDefFoundError(GHFileNotFoundException)
问题分析与解决办法
这不是代码问题,根源是Maven默认生成的jar包不包含项目依赖的第三方库。IntelliJ IDEA运行项目时会自动加载本地Maven仓库中的依赖,所以能正常启动;但直接运行打包后的jar时,JVM找不到org/kohsuke/github/GHFileNotFoundException这类依赖类,就会抛出NoClassDefFoundError。
解决办法是修改pom.xml,添加Maven插件来打包包含所有依赖的可执行jar:
在
pom.xml的<build>标签内添加maven-assembly-plugin插件:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!-- 替换为你的主类全限定名,比如 com.yourpackage.GitHubAnalyzer --> <mainClass>你的主类完整路径</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>重新执行打包命令:
mvn clean package进入
target目录,运行包含所有依赖的jar包(文件名会带有-jar-with-dependencies后缀):java -jar github-analyzer-1.0-SNAPSHOT-jar-with-dependencies.jar
内容的提问来源于stack exchange,提问作者Rares Popa
相关产品推荐
相关产品推荐

