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】的版本