Intellij IDEA Module 的Language Level的问题

最近从github上fork了张开涛的Shiro代码,IDE是Intellij IDEA。发现无论是Project还是Module,默认的Language Level都是JDK 1.5,而且每次修改都仅限于当前有效,稍后又会变回JDK 1.5

搜索了一番,解决办法都是这pom.xml中指定compiler的版本,如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

还有简洁版本:

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

至于原因,则是maven compiler plugin自身问题:

Apache Maven Compiler Plugin

The Compiler Plugin is used to compile the sources of your project. Since 3.0, the default compiler is javax.tools.JavaCompiler (if you are using java 1.6) and is used to compile Java sources. If you want to force the plugin using javac, you must configure the plugin option forceJavacCompilerUse.

Also note that at present the default source setting is 1.5 and the default target setting is 1.5, independently of the JDK you run Maven with. If you want to change these defaults, you should set source and target as described in Setting the -source and -target of the Java Compiler.

上面这一段的内容是:

  该插件从3.0版本开始,默认编译器是javax.tools.JavaCompiler (前提是JDK 1.6以后);如果想使用javac,需要手动设置。

  当前(Version: 3.5.1),默认使用JDK 1.5解析和编译源码,与运行Maven的JDK版本无关!!!如果想修改,见链接。

ps,链接中的内容如下:

    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
        [...]
      </build>
      [...]
    </project>

参考:

  http://stackoverflow.com/questions/27037657/stop-intellij-idea-to-switch-java-language-level-everytime-the-pom-is-reloaded

  http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

  http://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html

时间: 2024-10-02 15:53:28

Intellij IDEA Module 的Language Level的问题的相关文章

IntelliJ IDEA 之 jdk Language level

在java项目中必不可少的是我们要指定一个jdk. 在指定jdk的同时,还可以指定jdk的Language level,这个有点像我们工程最低支持版本.比如Language level 设置了5.0 只是就不能出现使用6.0/7.0特性的代码. 因为这些特性在5.0的环境下是无法编译的. 或者可以理解ide会安装Language level指定的jdk版本来对我们的代码进行编译,以及错误检查. 在IntelliJ中有两个地方设置这个参赛. 这个设置针对整个工程,或者说是工程默认的. 这里是针对模

[转]IDEA 出现编译错误 Multi-catches are not supported a this language level 解决方法

转自 http://blog.csdn.net/qq465235530/article/details/53897538 首先出现这种问题是说明正在使用低版本jdk编译其本身不支持的语法,出现这种情况有三种解决办法, 1.首先检查"File" -> "Project Structure" -> "Project settings" -> "Project" -> "Project langua

language level in Intellij IDEA

The Language level setting sets which features the code assistance in the editor should support. For example, if you're using JDK 1.7 but want your code to be compatible with JDK 1.6, you can set the language level lower than your actual JDK supports

idea language level 介绍

language level 介绍 其他 IDE 没有看到类似 language level 的设置,所以这个功能应该算是 IntelliJ IDEA 特有的,可是 IntelliJ IDEA 官网也没有专门介绍 language level 的地方,也许 IntelliJ IDEA 认为这个知识点属于 JDK 范畴所以没加以介绍吧.所以这里主要我对此的一些理解.我们应该知道 Java JDK 在每个新版本都会有其新特性,而新版本一般也会向下兼容旧版本的特性,IntelliJ IDEA 是对这些

idea开发工具下报Set language level to [email&#160;protected] in interfaces的解决方法

实现接口时报如下错误:Set language level to [email protected] in interfaces 在Java项目中必不可少的是我们要指定一个jdk. 在指定jdk的同时,还可以指定jdk的Language level,这个有点像我们工程最低支持版本.比如Language level 设置了5.0 只是就不能出现使用6.0/7.0特性的代码. 因为这些特性在5.0的环境下是无法编译的. 或者可以理解ide会安装Language level指定的jdk版本来对我们的代

自动重置Language level 5 与 Java Complier 1.5

Intellij IDEA新建Maven项目,总是默认Language level 5 与 Java Compiler 1.5. 以下是两种修改方式: 1. 手动进行修改: Java Compiler 1.5 报错:Error:java: Compilation failed: internal java compiler error 解决方式:File -> Settings -> Java Compiler -> Target bytecode version = 1.8 Langu

annotations are not supported at this language level解决办法

写spring helloController.clss  ,@Controller  报错 IDEA下报错:annotations are not supported at this language level 解决: 1. File -> Project Structure -> Project -> Project Language Level 选择"8 Lamdas Type Annotations etc" 2. 如果没有改选项请先安装和配置JDK1.8

phpstorm PHP language level无法选择

phpstorm PHP7新特性一直提示红色波浪线,应该是没有设置PHP 版本,但是打开PHPstorm---preference--lannguage&frameworks--PHP , 发现PHP language level 无法选择PHP7.2 ,查看旁边的提示信息说是同步了composer 的原因,只需到PHPstorm---preference--lannguage&frameworks--PHP---composer 去把 synchronize IDE settings w

关于idea中使用lamb表达式报错:ambda expressions are not supported at this language level

我使用的是jdk1.8,使用lamb表达式的时候,报错 ambda expressions are not supported at this language level, 后来,设置了 接着重启了项目,在使用的过程中依然报错,后来查阅资料,说虽然设置了,但是idea默认还是1.5,关键的是需要在pom.xml文件中添加: <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven