IDEA运行Maven打包项目编译报错:
不再支持源选项 5。请使用 6 或者更高版本。
不再支持目标选项 1.5。请使用 1.6 或更高版本。
最近学习大数据,利用mapreduce进行WordCount单词计数测试,在IDEA中建好Maven项目定义好类后,打jar包是出现了错误,没能成功打包。
报错记录如下:
报错是版本问题,马上就想到了jdk版本是否不匹配,随即win+r打开命令行输入 :java -version 查看Java版本,我的是Java8的版本。
进入IDEA点击右上角的project structure…检查IDEA配置
进入Project,不知道什么时候升级为了Java11,暂且不管,进来发现Project language level是8,将两块区域的版本选择一致,
进入modules,将这里面的language level也选择11的版本,再次进行打包尝试。
结果还是不行,继续检查此处地方是否对应jdk的版本。点击file->settings->Build,Execution,Deployment->java Compiler,发现Project bytecode version为11,而项目的Target bytecode version却是5,将Target bytecode version改为11,Apply,再次打包依旧报错。
寻思真的需要把IDEA的Java版本降到8才行???不甘心,在网上查询资料,发现在项目pom.xml中可以指定java版本,于是将下面的依赖放入pom.xml文件中,我的IDEA版本是11,所以指定Java11的版本,import change 后,再次package,终于是打包成功了!
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
但是,将jar包上传到linux虚拟机中测试时,发生报错:Exception in thread “main” java.lang.UnsupportedClassVersionError: MapReduce/WordCount has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0,这里还是Java版本不匹配,做到这里我恍然大悟,我的Linux上安装的Java版本也是8.0的,而jar包里却是指定的Java11,于是我找了一个Java8,且相同代码的wordcount.jar包上传到Linux进行测试,成功的进行了单词计数。到这里,就清晰的知道错在哪里了!Linux上的jdk版本是1.8,为了之后的学习能顺利进行,还能怎末办呢?降IDEA的Java的版本呗!!!使本地jdk与Linux的版本相同,后期会少很多麻烦!!!
就说到这里了,希望你们遇到类似问题有所启发,少走弯路!如果有更好的解决方法请在评论区多多指教,好了,我去降Java版本了!————瑞思拜