Spring Boot Jar包无法运行:Maven启动正常但Jar执行报IllegalAccessException异常
解决Spring Boot Jar运行时IllegalAccessException问题
这个错误的核心根源是你的主类 com.cafe2.user.UserApplication 本身没有被声明为public——虽然main方法是public static的,但Spring Boot的Jar加载器(MainMethodRunner)通过反射调用主方法时,首先需要具备访问主类本身的权限。
用mvn spring-boot:run启动时,JVM是直接加载并运行主类,这时候对包级私有类(无public修饰符)的访问限制相对宽松;但打包成Jar后,Spring Boot使用自定义类加载器启动应用,这时候会严格执行类的访问权限检查,导致无法访问非public的主类,最终抛出这个异常。
具体解决步骤:
- 打开
UserApplication类,确保类声明带有public修饰符:package com.cafe2.user; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class UserApplication { // 这里必须添加public修饰符 public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } } - 重新打包生成Jar文件:
mvn clean package - 再次运行Jar文件,问题应该就能解决了。
另外也可以确认一下Spring Boot Maven插件的配置,确保主类被正确指定(不过你用Maven运行正常,这一步大概率没问题),插件配置示例参考:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.cafe2.user.UserApplication</mainClass> </configuration> </plugin> </plugins> </build>
内容的提问来源于stack exchange,提问作者emad bahrami
相关产品推荐
相关产品推荐

