IntelliJ构建AWS应用JAR后抛出software.amazon.awssdk.regions.Region类找不到异常求助
问题分析与解决方案
核心问题
你的pom.xml中software.amazon.awssdk:regions依赖的<scope>被设置为provided,这个作用域表示该依赖仅在编译和测试阶段可用,打包时不会被包含到最终JAR中。
IntelliJ运行应用时,会自动将所有依赖(包括provided作用域的)加入类路径,所以本地运行正常;但打包后的JAR中不包含该依赖,执行时JVM无法找到对应的类,就会抛出java.lang.ClassNotFoundException。
修复步骤
1. 调整regions依赖的作用域
将regions依赖的<scope>provided</scope>删除(默认作用域为compile,会被打包进JAR),修改后的依赖如下:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>regions</artifactId> <version>2.20.38</version> </dependency>
2. 确保打包为可执行的胖JAR
如果仅调整作用域仍有问题,说明你打包的是仅包含自身代码的普通JAR,而非包含所有依赖的胖JAR。可以通过Maven插件实现:
在pom.xml的<build><plugins>中添加maven-assembly-plugin配置:
<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>你的主类全路径</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
执行mvn clean package后,会生成带-jar-with-dependencies后缀的可执行JAR,直接用java -jar 文件名.jar运行即可。
3. 验证修复效果
重新打包后,解压JAR文件,检查software/amazon/awssdk/regions/Region.class是否存在,确认依赖已被正确包含。
内容的提问来源于stack exchange,提问作者BlueBucket7
相关产品推荐
相关产品推荐

