java.lang.UnsupportedClassVersionError::Class文件编译的版本错误
有时,从SVN下检出新项目后,在TOMCAT上跑报错:
Caused by: java.lang.UnsupportedClassVersionError: javafx/application/Application : Unsupported major.minor version 52.0
起初想的是原因是jdk版本不一致导致的,就先顺藤摸瓜找下去:一般查的流程如下
第一步,首先是检查本机当前的jdk version。在cmd里java -version查看当前版本号。
先查了报错maven项目的pom.xml文件中的jdk环境要求,确定一致后往后走
第二步,检查当前项目的Jave Compiler是否与本机jdk版本吻合。
第三步,切换过java Compiler和java build path并且apply后,最好把之前部署在Tomcat上编译出项目的class文件删了,然后重新部署一次。避免Eclipse直接运行以前编译过的class文件。然后继续报UnsupportedClassVersionError;
(ps.有时候eclipse也会抽风,编译不出来,可以重启下eclipse试下 :)
这个报错有可参考以下文章:
http://blog.csdn.net/pipisorry/article/details/42965435
然而,检查与调整上面依旧报错。。。于是开始怀疑eclipse本身编译有问题,接着想法是用maven直接编译检查:
用脚本命令,清除项目,由于是maven项目,需安装依赖,安装到指定目录;
call mvn clean install dependency:copy-dependencies -DoutputDirectory=target/lib -DskipTests
配置下maven_opts,用tomcat7运行;
set MAVEN_OPTS=%MAVEN_OPTS% -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m
call mvn tomcat7:run
运行后,和之前一样的报错。无语。。
maven命令可参考下:
https://www.cnblogs.com/adolfmc/archive/2012/07/31/2616908.html
最后,想到的是:因为之前是安装过jdk1.8的版本,后来的1.7版本是直接覆盖安装,就联想了下可能有1.8版本的残留的jdk文件影响了JVM的编译?
继续折腾。。
将电脑里的java环境完全卸载,删了jdk的文件,删相关的注册表;重新下载了个新的1.7jdk,安装后竟然就好了(泪奔)。----------记录一次无语的报错 :)
推荐阅读
-
Java类文件(.class文件)版本号与JDK的对应关系
-
Java类文件(.class文件)版本号与JDK的对应关系
-
最近上传图片上传文件报413错误及仅Https下报413问题,IIS高版本的配置方案及Web.config配置全解
-
Maven项目打包发布时提示test文件的编译错误
-
JSP文件编译后所产生的class的存放位置
-
【Java】Class文件编译的版本号与JDK版本号的对应关系
-
VMware共享windows下的文件夹,编译时出现“Value too large for defined data type”错误
-
java文件编译后额外生成的$1.class是怎么一回事
-
Maven中指定Java的编译版本和源文件编码方式
-
vue.js编译时给生成的文件增加版本号