You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Jar文件无法运行,抛出IllegalAccessException异常求助

解决Spring Boot Jar运行时IllegalAccessException问题

这个异常的核心矛盾点很清晰:Maven直接运行正常,但打包成Jar后就报错,本质是Spring Boot的Jar加载器(MainMethodRunner)无法通过反射访问你的主类com.cafe2.user.UserApplication的main方法——哪怕你已经给main方法加了public static修饰符。结合场景来看,最常见的问题出在主类本身的访问权限上。

为什么会有这个差异?

  • 用mvn spring-boot:run直接运行时,JVM是直接调用主类的main方法,哪怕主类是包级访问权限(没有public修饰),在同一个类加载器上下文里也能正常执行。
  • 但Spring Boot生成的可执行Jar是通过反射机制调用main方法的,这时候如果主类本身不是public,JVM的访问控制规则就会阻止反射调用,抛出IllegalAccessException。

快速解决方案

1. 检查并修改主类的访问修饰符

打开你的UserApplication类,确保它被声明为public:

// ❌ 错误示例:主类无public修饰符
class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
}

// ✅ 正确示例:给主类添加public修饰符
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
}

2. 重新打包并测试

修改完成后,重新执行打包命令:

mvn clean package

然后运行生成的Jar文件:

java -jar target/你的应用名称.jar

其他可能的排查方向(如果上述方法无效)

  • 检查spring-boot-maven-plugin配置,确保指定了正确的主类:
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <mainClass>com.cafe2.user.UserApplication</mainClass>
        </configuration>
    </plugin>
    
  • 如果你用的是Java 9+模块系统,需要在module-info.java中导出主类所在的包:
    module com.cafe2.user {
        exports com.cafe2.user;
        requires spring.boot;
        requires spring.boot.autoconfigure;
    }
    

内容的提问来源于stack exchange,提问作者emad bahrami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:42:40