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端口被占用:

解决
  1. 首先用如下命令查看占用8080端口的进程:
netstat -lnp|grep 80


然后使用如下命令杀掉占用端口的进程:

kill -9 1471
kill -9 970

确认进程是否已被关闭:

重新启动,可以发现项目启动成功:

注意:上述命令是linux下的。windows下用以下命令查看占用8080端口的进程和杀掉占用端口的进程:

netstat -ano|findstr "8080"    //查询
tskill 3500     //杀掉进程
原文地址:https://www.cnblogs.com/xiaozhengtongxue/p/13474627.html