Maven加载Gson库报错求助:NoClassDefFoundError问题排查
问题原因
你遇到的NoClassDefFoundError是因为默认Maven打包生成的jar仅包含你自己编写的代码,不包含依赖的Gson库文件。当用java -jar运行时,JVM只能找到你的主类,找不到Gson的类文件,因此抛出这个错误。
解决方案
以下是两种常用的解决方式,均通过Maven插件将依赖打包进可执行jar中:
方法一:使用maven-shade-plugin(推荐)
该插件会把所有依赖的类合并到你的jar里,生成一个包含所有代码的"胖jar"。
在pom.xml的<build>-><plugins>节点下添加如下配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.example.App</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
执行打包命令:
mvn clean package
打包完成后,运行target目录下生成的同名jar:
java -jar target/my-api-app-1.0-SNAPSHOT.jar
方法二:使用maven-assembly-plugin
该插件会生成包含依赖的可执行jar,同时也会产出包含依赖的压缩包。
在pom.xml的<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> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
执行打包命令:
mvn clean package
打包后,target目录下会生成名为my-api-app-1.0-SNAPSHOT-jar-with-dependencies.jar的文件,运行它:
java -jar target/my-api-app-1.0-SNAPSHOT-jar-with-dependencies.jar
方法三:运行时手动指定classpath
如果不想打包依赖,也可以在运行时手动将Gson的jar加入classpath:
- 先执行
mvn clean package生成普通jar - 找到本地Maven仓库中的Gson jar(默认路径为
~/.m2/repository/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar) - 运行命令:
java -cp target/my-api-app-1.0-SNAPSHOT.jar:/path/to/gson-2.11.0.jar com.example.App
(Windows系统将冒号替换为分号)
额外说明
你之前的Gson依赖配置是正确的,开发时IDE能识别依赖是因为IDE会自动将Maven依赖加入classpath,但打包后的普通jar不包含这些依赖,因此运行时需要额外处理。
内容的提问来源于stack exchange,提问作者Socrates
相关产品推荐
相关产品推荐

