Linux平台部署maven项目,报异常Exception in thread "main" java.lang.UnsupportedClassVersionError和Web server failed to start. Port 8080 was already in use
背景
使用java -jar
的方式将maven项目部署到linux平台(虚拟机)下,报出异常Exception in thread "main" java.lang.UnsupportedClassVersionError。
项目部署过程
一、项目打包:
使用如下命令对项目打包:
D:\sell>mvn clean package -Dmaven.test.skip=true
打包成功:
在pom.xml文件里添加
重新打包,可以看到包名已经被修改:
二、部署
使用如下命令将项目部署到linux平台(虚拟机)指定目录/opt/javaapps
下:
scp target/sell.jar root@10.3.11.185:/opt/javaapps
在虚拟机项目目录下启动项目:
项目报异常:
三、发现异常
检查linux平台的java版本:
检查linux平台的javac版本:
java版本是一致的,没有问题,然后检查maven项目所要求的java版本,进入pom.xml文件中查看:
发现maven项目中jdk是11的,而linux平台上是1.8的,两者不匹配才导致上述异常。
四、解决
将maven项目中JDK版本改成1.8.如下:
<properties>
<java.version>1.8</java.version>
</properties>
删除掉linux平台下刚才上传的异常文件:
重新将项目打包上传,然后就可以成功启动了。
五、后续
改了JDK版本号重新上传运行,项目报了新的异常,提示8080端口被占用:
解决
- 首先用如下命令查看占用8080端口的进程:
netstat -lnp|grep 80
然后使用如下命令杀掉占用端口的进程:
kill -9 1471
kill -9 970
确认进程是否已被关闭:
重新启动,可以发现项目启动成功:
注意:上述命令是linux下的。windows下用以下命令查看占用8080端口的进程和杀掉占用端口的进程:
netstat -ano|findstr "8080" //查询
tskill 3500 //杀掉进程