黑匣子 之 一次springboot上线问题

 今天部署一个springboot项目,生产环境一直难以成功,报错java.lang.UnsupportedClassVersionError: javax/annotation/ManagedBean : Unsupported major.minor version 51.0;

    此项目开发环境为JDK1.8,springboot-version:1.5.9 reease;而生产环境JRE版本为1.6.0_45。结合错误提示信息和网上查找资料,初步得出结论,代码编译环境版本不一致,而相对应的字节码解析不一样。网上提供的资料如图:

遂决定更换开发环境JDK版本,与生产环境保持一致。考虑到更换生产环境JRE可能会牵涉较多工程,这样更改可能会相对省时。
    
 于是操作,后发现仍有其他错误,并根据错误提示一步步脱离实际问题更远的操作(当时也考虑可能内嵌tomcat版本问题,更换tomcat版本)。。。。。终于无济于事,回到远点。
    
 最终妥协,在生产商安装JDK1.8环境,考虑到 不影响其他的项目,决定此项目单独使用jdk1.8环境,此次不做生产环境的配置的变更。因为jar项目使用java -jar启动,遂在启动脚本中指定好调用的java目录。如:nohup /usr/java/jdk1.8.0_161/bin/java -jar joke_fxq_2.0-0.0.1-SNAPSHOT.jar >log.file 2>&1 &;项目成功启动,问题得以解决。
    
 其中犯过一些错误,引以为戒。因为tomcat项目,只需在容器启动脚本中设置环境变量即可,export java_home 。。。。。。,遂如之操作(只是设置了环境变量,并没有更改启动脚本),最后失败。jar程序因为需要java 命令调用,而java只是根据当前环境变量获取内容,所以同样需要指定具体使用的启动命令。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章