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编译时编码错误的更多相关文章

  1. cmd命令对java程序进行编译时出现:编码GBK的不可映射字符

    原因:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定JAVA源程序的编码格式,则java.exe首先获得我们才做系统默认采用的编码格式,也即在编译JAVA程序时,若我们不 ...

  2. javac编译提示编码GBK的不可映射字符

    使用命令行javac命令编译java文件, 提示错误:编码GBK的不可映射字符. 在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe会获得我们操 ...

  3. Java注解处理器--编译时处理的注解

    1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解.注解处理器是 javac 自带的一个工具,用来在编译时期扫 ...

  4. java中的编译时常量与运行时常量

    常量是程序运行期间恒定不变的量,许多程序设计语言都有某种方式,向编译器告知一块数据是恒定不变的,例如C++中的const和Java中的final. 根据编译器的不同行为,常量又分为编译时常量和运行时常 ...

  5. Java虚拟机 - Javac编译与JIT编译

    [深入Java虚拟机]之七:Javac编译与JIT编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤 ...

  6. 查看PL/SQL编译时的错误信息

    编译无效对象是DBA与数据库开发人员常见的工作之一.对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法. 一.当前数据库版本信息及无效对象 1.查看当前数据库版本 [sql] view pl ...

  7. 在Linux下安装PHP过程中,编译时出现错误的解决办法

    在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...

  8. javac编译时找不到文件的问题和运行项目找不到指定类问题

    问题描述: 刚刚安装完JDK,打开Eclipse创建一个新项目,写了一个测试类进行输出打印语句时,报无法找到相应类. 然后,我跑到CMD中进行javac Test.java运行测试时,报找不到对应文件 ...

  9. 【java】javac编译多个有依赖关系的java文件为class文件

    历史文章: [jar]JDK将单个的java文件打包为jar包,并引用到项目中使用[MD5加密] [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解 ...

  10. maven编译时GBK错误

    一.问题描述 今天在MyEclipse中使用Maven编译项目源代码时,结果如下了如下的错误 百思不得其解啊,Java源代码在MyEclipse中显示是没有任何错误的,可是执行"maven ...

随机推荐

  1. 2、Java程序设计环境

    1.JDK Java开发工具箱 在Java 9之前,有32位和64位两个版本的Java开发工具包.现在Oracle公司不在开发32位版本,要使用Oracle JDK,你需要有一个64位的操作系统. 安 ...

  2. Vue二级联动上传图片

    二级联动的后台和之前一样都需要一个字典字段查询来实现二级联动 但是由于VUE语法和AJAX的不同在前台绑定的时候也有所不同 2.1 首先下拉框的写法就有了本质的改变通过v-model="&q ...

  3. window nginx php ci框架环境搭建

    下载nginx 后修改配置文件: location / { #try_files $uri $uri/ /index.php?$query_string; root C:\Software\serve ...

  4. Docker 修改容器中的mysql密码

    1.查看容器服务 docker ps2.进入mysql容器 docker exec -it mysql /bin/bash 注:mysql为容器的名字 3.登录MySQL mysql -u root ...

  5. jxg项目Day5-关于项目打包

    springboot项目中手动打包,加以下依赖: <parent> <artifactId>spring-boot-dependencies</artifactId> ...

  6. habse与Hadoop兼容性问题

    今天大数据实验课被血坑,在第一步hbase的安装时就卡住了,之后处理了一整节实验课,也未能解决,回到宿舍后才解决(这里不得不说"度娘"不行了,出现的问题完全找不到,最好还是在chr ...

  7. 本地项目导入svn托管

  8. centos7 启动Tomcat7时报错:The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found

    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production envi ...

  9. idea 切换database数据库方言

    在适配各种国产数据库时常常遇到存在数据库方言的情况,例如openGauss支持oracle兼容模式.. 在这种情况下,就需要在idea里对方言进行切换,否则无法执行oracle语法的sql. 1.连接 ...

  10. supervisor不一样的日志轮转

    出于项目需求,需要读取某个进程的最新日志,而这个进程刚好是supervisor管控. 很自然地我就想到了,根据日志的编辑时间排序,获取最新的日志文件. 然而,发现了奇怪的一幕: 发现什么没有? web ...