zoukankan      html  css  js  c++  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
    

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

    X 参考文献

  • 相关阅读:
    学会企业分析
    股票暴跌,收益会更高
    富人?中产?
    学会看财务报表
    财务自由三大核心工具
    理财工具分类
    webpack构建速度和体积极限优化
    将搜索时间设置为23:59:59
    省市区县街道四级联动下拉菜单
    用原生JS实现多张图片上传及预览功能(兼容IE8)
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/13800591.html
Copyright © 2011-2022 走看看