[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 参考文献
[Java SE]javac编译时编码错误的更多相关文章
- cmd命令对java程序进行编译时出现:编码GBK的不可映射字符
原因:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定JAVA源程序的编码格式,则java.exe首先获得我们才做系统默认采用的编码格式,也即在编译JAVA程序时,若我们不 ...
- javac编译提示编码GBK的不可映射字符
使用命令行javac命令编译java文件, 提示错误:编码GBK的不可映射字符. 在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe会获得我们操 ...
- Java注解处理器--编译时处理的注解
1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解.注解处理器是 javac 自带的一个工具,用来在编译时期扫 ...
- java中的编译时常量与运行时常量
常量是程序运行期间恒定不变的量,许多程序设计语言都有某种方式,向编译器告知一块数据是恒定不变的,例如C++中的const和Java中的final. 根据编译器的不同行为,常量又分为编译时常量和运行时常 ...
- Java虚拟机 - Javac编译与JIT编译
[深入Java虚拟机]之七:Javac编译与JIT编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤 ...
- 查看PL/SQL编译时的错误信息
编译无效对象是DBA与数据库开发人员常见的工作之一.对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法. 一.当前数据库版本信息及无效对象 1.查看当前数据库版本 [sql] view pl ...
- 在Linux下安装PHP过程中,编译时出现错误的解决办法
在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...
- javac编译时找不到文件的问题和运行项目找不到指定类问题
问题描述: 刚刚安装完JDK,打开Eclipse创建一个新项目,写了一个测试类进行输出打印语句时,报无法找到相应类. 然后,我跑到CMD中进行javac Test.java运行测试时,报找不到对应文件 ...
- 【java】javac编译多个有依赖关系的java文件为class文件
历史文章: [jar]JDK将单个的java文件打包为jar包,并引用到项目中使用[MD5加密] [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解 ...
- maven编译时GBK错误
一.问题描述 今天在MyEclipse中使用Maven编译项目源代码时,结果如下了如下的错误 百思不得其解啊,Java源代码在MyEclipse中显示是没有任何错误的,可是执行"maven ...
随机推荐
- 学习JavaScript第五周
MySQL基本内容: 访问:2种 1.图形化界面 - 傻瓜式 要求:同时打开apache和mysql 访问:127.0.0.1:端口号/phpmyadmin localhost:端口号 ...
- 斐讯K2路由器刷机教程
为了避免斐讯后门程序. 我用的win10系统 我刷的是华硕的老毛子 Padavan,我放的是压缩包,请解压到桌面! 下载地址: 链接:https://pan.baidu.com/s/1O_spSek- ...
- vim入门与快捷键使用
1.移动 上下左右 jkhl 2.模式选择 命令模式 插入模式 字符选择模式 3.剪切复制 粘贴:p 复制 y 选择 v 进入选择模式 4. 撤销恢复 撤销 u 恢复 ctrl + r 5. 删除 d ...
- [Leetcode 701]二叉搜索树BST中插入元素
题目 BST二叉搜索树中插入元素 二叉搜索树:左边<root<右边 https://leetcode.com/problems/insert-into-a-binary-search-tr ...
- 版本不兼容(NoSuchMethodError: com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank)
"C:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspri ...
- hello cnb
Huawei executive Meng Wanzhou freed by Canada arrives home in China 目录 关于git merge冲突时候的想法 Git修改commi ...
- HCK 、PCLK、FCLK的区别
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt control ...
- springboot中redis使用和工具
application.properties #Redis相关配置 spring.data.redis.host=localhost #端口 spring.data.redis.port=6379 # ...
- Js:当前日期格式化与比较大小
//日期格式转换 getCurrentTime() { var date = new Date();//当前时间 var year = date.getFullYear() //返回指定日期的年份 v ...
- xlsx合并单元格简单介绍
在使用xlsx导出excel表格的时候,有时候我们需要将某些表格进行合并,该如何做呢,代码如下: import XLSX from 'xlsx'; // ... // xlsxData 是 Excel ...