项目下有多个module 其中client和common-lib是用于存放公共类 gateway和backend都引用到client和common-lib web是前端项目 docs是项目文档路径
因为我的项目实际只有gateway、backend、web需要打包运行, common-lib和client都是没有启动类的,无需运行。 于是开始打包backend 但是可以看到报错了 Could not resolve dependencies for project…
根据报错信息可以看出是没有找到依赖包client 这也就说明,我们需要先打包依赖module到本地maven仓库中 于是先将两个client和common-lib打包到maven仓库中
注意项目要切换成你要打包的module 输入命令:mvn install
打包成功后我们在本地的仓库中就可以看到这两个jar包了
然后再重新打包gateway和backend 打包gateway成功 运行测试 java -jar xxx 发现报错
UnsupportedClassVersionError: Preview features are not enabled for com/jd_link/icdc/gateway/GatewayApplicationLoader (class file version 58.65535). Try running with '--enable-preview'
查阅相关资料发现是编译时jdk版本问题 于是找到pom.xml中定义jdk的地方 将jdk修改为1.8,同时将release标签和compilerargs标签注释掉,否则后面可能会报错无效的标记 另外这里的标记也注释掉
然后重新打包,成功,同样作用于backend上,打包成功(注:打包前先clean)
再次java -jar jar包名 运行项目,运行成功
后续开发,新增了不少模块,再次打包时发现之前的打包出现了错误,具体报错定位到测试类上,因为时间关系没有细究原因,因为是测试类,之间将其删除了重新打包,打包成功了,但是运行时出错 报错内容大致如下:
this version of the Java Runtime only recognizes class file versions up to 52.0
具体如图所示
根据提示其实大概能猜测出来是版本的问题,猜测大致是java,tomcat版本问题。 我服务器上的java版本是1.8,打包时也已经将jdk申明为1.8了,而且如上所示,之前使用同样的方法是打包并且运行成功了的。现在出现了问题,于是查阅大量资料后,开始尝试网上其他的办法,汇总如下
- jdk降级
各module也降级
重新打包部署。这里我采用这种办法仍然不行
- jdk升级 上面那种办法启发了我,既然降级不行那就升级,服务器上的jdk是1.8版本的,部署采用的是14版本,所以在服务器上又安装了jdk14,并将之前在pom中的改动恢复了,还是采用jdk14,–enable-preview的注释也取消了,如下所示
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
UTF-8
14
--enable-preview
11
11
org.apache.maven.plugins
maven-resources-plugin
3.2.0
UTF-8
org.apache.maven.plugins
maven-surefire-plugin
3.0.0-M5
--enable-preview
这里安装后可能会遇到多jdk切换不成功的问题,可参考解决办法如下: 引用来源 1.为了从jdk1.8切换到1.7,首先做的是将环境变量中的JAVA_HOME值改成1.7的安装路径。这个是必须做的。做完bai这个在cmd下输入Java -version查看是否切换,如果ok,那就成功了,否则试试后几个方法。 2.找到控制面板,查看方式选择大图标或者小图标,找到java选项并点击进入。然后选择java栏,点击查看,将dk1.8的启用勾选去掉,并保存。然后查看是否切换。 3.找到目录C:\Windows\System32,将java.exe,javaw.exe,javaws.exe删除即可。如果是64位系统,在C:\Windows\SysWOW64下去删。 4.将环境变量Path路径中的%JAVA_HOME%\bin值移到最前面,我的是win10系统,移动后如下: 5.如果还不能切换,你可以使用 WIN + R 输入regedit 敲回车打开注册表 找到 HKEY_LOCAL_MACHINE–SOFTWARE–JavaSoft,点击Java Development Kit 更改右边 CurrentVersion的值设置为你想要的版本值(右键-更改就可以)。
将项目打包后cmd运行,运行成功