[Java SE] javac 编译时错误,报:源发行版与目标发行版的字节码版本不一致
1 问题复现
Information:java: javacTask: 源发行版 8 需要目标发行版 1.8
Information:java: Errors occurred while compiling module 'SSMDemo'
Information:javac 1.8.0_261 was used to compile java sources
Information:2020/10/12 0:32 - Build completed with 1 error and 0 warnings in 1 s 309 ms
Error:java: Compilation failed: internal java compiler error
2 原因分析
step1 查看文件编码
LambdaTest.java : UTF-8
方法1: windows中查看文件编码:(选中目标文件)>(鼠标右键,记事本打开)>另存为>编码(查看当前的编码字符集)
方法2: IDEA>打开目标文件>(界面右下角)
step2 查看 javac 的命令说明(帮助文档)
javac -help
由此,结合错误信息,可猜测:
Q:为什么在CMD命令行下编译和在IDEA中编译均报此异常?
A:javac此时编译时,使用的 系统默认的GBK进行【解码】和编译,而java文件使用UTF-8进行【编码】,从而导致的错误。
step3 验证: 为javac编译器【指定字符集】进行【解码】和编译
javac -encoding utf-8 LambdaTest.java
结果: 无任何报错信息,编译成功!
step4 解决异常:Compilation failed: internal java compiler error
经测试:
1.IDEA中的异常与其编译器编译时的字符集无关。
2.与java文件(使用了JDK1.8的新特性————Lambda语法),而IDEA中设置JDK(JDK1.8)的实际JDK语法版本为1.7的语法。1.7的语法,自然不支持1.8的语法了。
(即 1.8向下兼容以前版本的语法)
针对异常Compilation failed: internal java compiler error
解决方案:Setting->Compiler->Java Compiler>设置相应Module的【target byte code version】的版本
[补充] 设置当前项目的JDK语法版本
X 参考文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号