java编译提示错误_[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

9acc91897047b6eca35c09c003b31f84.png

078686b1354fea76235fad0878d96376.png

1dbfc1e26c5017fdad2fc858c6e7827d.png

2 原因分析

step1 查看文件编码

LambdaTest.java : UTF-8

方法1: windows中查看文件编码:(选中目标文件)>(鼠标右键,记事本打开)>另存为>编码(查看当前的编码字符集)

c6207f2a84663b5464e81518b25f44a6.png

方法2: IDEA>打开目标文件>(界面右下角)

5c245a98428296aff4a8bdf0eee20afb.png

step2 查看 javac 的命令说明(帮助文档)

javac -help

f5e27ad7824b47557f85196615be7a04.png

由此,结合错误信息,可猜测:

Q:为什么在CMD命令行下编译和在IDEA中编译均报此异常?

A:javac此时编译时,使用的 系统默认的GBK进行【解码】和编译,而java文件使用UTF-8进行【编码】,从而导致的错误。

a274c3e8fdf1fea0c12c20ffb11c0fc6.png

step3 验证: 为javac编译器【指定字符集】进行【解码】和编译

javac -encoding utf-8 LambdaTest.java

结果: 无任何报错信息,编译成功!

046ef4d8c9b751ffb5d926847ad8b5ac.png

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

8ddb7e1f6af07b055bbdc5d2c0893cc5.png

[补充] 设置当前项目的JDK语法版本

b8fca09d96753cd0fa9608087c290c66.png

X 参考文献

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值