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

Spring项目部署AWS EC2:JAR运行报错及类加载问题求助

部署Spring+Vaadin项目到AWS EC2的问题解决办法

一、彻底解决“no main manifest attribute”错误

不要手动配置Manifest,直接用Spring Boot Maven插件生成包含正确入口的可执行Fat Jar:

  1. 在pom.xml的build/plugins节点下添加Spring Boot插件配置:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>你的Spring Boot版本号</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>me.shreyeschekuru.dsa.Application</mainClass>
    </configuration>
</plugin>
  1. 执行打包命令:mvn clean package
  2. 运行target目录下不带original前缀的Jar包,这个是包含所有依赖的可执行Fat Jar,命令示例:java -jar dsa-0.0.1-SNAPSHOT.jar

二、解决“无法找到AppShellConfigurator类”问题

这个错误是Vaadin依赖未被正确打包或加载导致的,按以下步骤排查:

  • 检查pom.xml中的Vaadin依赖,确保依赖范围不是provided(provided依赖不会被打包到Jar中,EC2环境无对应依赖):
<dependency>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-spring-boot-starter</artifactId>
    <!-- 保留默认的compile范围,不要设置为provided -->
</dependency>
  • 确认你的Application主类所在包能扫描到实现AppShellConfigurator的配置类,必要时添加@ComponentScan(basePackages = "你的Vaadin配置类所在包")到主类上。
  • 验证Jar包中是否包含Vaadin类:执行jar tf 你的Jar包名.jar | grep AppShellConfigurator,如果输出对应类路径,说明依赖已打包;如果无输出,重新执行mvn clean package并查看Maven日志是否有依赖打包警告。
  • 确保EC2实例安装的JDK版本与本地开发环境一致(比如本地用Java 17,EC2也要安装Java 17)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:22:18