EC2部署Spring Boot项目编译报错:依赖包不存在求助
解决方案:EC2上Spring Boot项目依赖加载失败问题
核心问题:直接用javac编译是错误操作
Spring Boot项目依赖大量Spring及第三方库,javac是基础编译工具,不会自动从Maven仓库拉取依赖并加入类路径,所以必然出现找不到包的错误,必须用Maven来管理构建流程。
1. 在EC2上通过Maven构建项目
- 安装Maven:根据EC2的Linux发行版选择命令:
- Ubuntu/Debian:
sudo apt update && sudo apt install maven - CentOS/RHEL:
sudo yum install maven
- Ubuntu/Debian:
- 进入项目根目录(确保当前目录下有
pom.xml) - 执行构建命令:
mvn clean package
这个命令会自动下载所有依赖、编译项目代码、生成包含所有依赖的可执行JAR包(输出在target目录下) - 运行项目:
java -jar target/[你的项目名称]-[版本号].jar(替换成实际的JAR文件名)
2. 修正pom.xml的依赖配置
你的pom.xml中手动指定了spring-data-mongodb的版本,这会和Spring Boot starter的版本管理冲突,建议删除这个单独的依赖,只保留spring-boot-starter-data-mongodb即可,Spring Boot会自动匹配兼容的版本:
<!-- 移除这个手动指定版本的依赖 --> <!-- <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>4.0.2</version> </dependency> -->
3. 确保EC2的Java版本与项目一致
- 执行
java -version和javac -version,确认EC2上的Java版本和pom.xml中java.version配置的版本完全一致(比如都是17) - 如果版本不匹配,用
update-alternatives --config java命令切换到对应版本
4. 备选方案:本地构建好JAR再上传
如果EC2网络较差或不想安装Maven,可以在本地IntelliJ中完成构建:
- 本地执行
mvn clean package,生成target目录下的JAR包 - 用scp上传到EC2:
scp target/[你的项目].jar ec2-user@[EC2公网IP]:/home/ec2-user/ - 登录EC2后运行:
java -jar [你的项目].jar
内容的提问来源于stack exchange,提问作者csRainiercs
相关产品推荐
相关产品推荐

