错误:java:javacTask:源发行版8需要目标发行版1.8


Answers:


1911
  1. 文件>设置>构建,执行,部署>编译器> Java编译器
  2. 目标字节码版本更改为您正在使用的模块的1.8

如果您使用的是Maven

将编译器插件添加到pom.xml顶级project节点下:

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

(从评论中悬挂。)

注意:如果您不介意重新导入项目,那么您真正需要做的就是更改pom并重新导入项目,然后IntelliJ将选择正确的设置,而您不必手动更改它们。


在IntelliJ 14 Ultimate中工作。
DtechNet

在较旧的IDEA版本上,请尝试:设置->编译器-> Java编译器->每模块字节码版本
Jonik

88
如果您使用的是Mac,则位于Intellij IDEA>偏好设置...>构建,执行,部署> Java编译器
JP Armstrong

4
对于比2016.2更新的Intellij,还有一个地方可以检查:Project Structure -> Project Settings -> Modules -> Denpendencies -> Module SDK
布鲁斯·孙

1
如果您的POM层次结构具有两个以上的级别,并且您的编译器插件是在父POM中定义的,则IntelliJ可能无法在最深层识别它。我说可能不会,因为对于某些其他模块,即使它们扩展了相同的父POM,它也可以。
睡鼠


116

当您未正确配置编译器插件时,这看起来像是Maven生成的那种错误。这是Java 8编译器配置的示例。

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- ... -->

    <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>

10
对于其他的Maven新手像我一样,这应该是下projectbuild,然后plugins
达伦·黑尔

4
同样,如果<source>1.8</source><target>1.8</target>被配置,也会发生上述错误。
BuZZ-dEE

1
这对我有用,谢谢!版本标签无法解析(我将其更改为与我的Maven版本匹配),因此我将其注释掉。我相信Maven在这种情况下应基于以下线程自动获取正确的最新版本:stackoverflow.com/questions/17239394/…
鲍里斯(Boris)

84

我发现的最快方法:

  • 按:CTRL+ SHIFT+ A(对于Mac + SHIFT+ A
  • 类型: java compiler
  • 按: ENTER

在“设置”窗口中,将“目标字节码”设置为1.8

(对于Java9,则为9


3
这绝对对我
有用

1
按⌘获取偏好。
X. Wang,

31

有两种方法可以解决此问题:

  1. 设置设置(File -> Settings -> Build, Execution, Deployment -> Java Compiler)在此处输入图片说明
  2. 将构建部分添加到您的pom.xml在此处输入图片说明

18

关于Maven的许多答案都是正确的,但是您不必直接配置插件。

就像Apache Maven编译器插件的Wiki页面上所述,您可以只设置插件使用的2个属性。

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

1
@ Marvin Richter我尝试了您的解决方案,但不适用于IntelliJ-我的猜测是在纯Maven构建(命令行)中它是正确的,但IntelliJ只是忽略了这些属性。我必须按照其他解决方案中所述配置插件。
Benoit

1
不,我没有,因为其他解决方案有效。现在,我将项目迁移到了gradle。
Benoit

4
完成后的工作就像超级按钮。右键单击pom.xml-> Maven->重新导入。这应该是Maven用户可接受的答案。
ptkvsk

实际上,您实际上需要org.apache.maven.plugins:maven-compiler-plugin在pom或gradle文件中使用插件,在文档中打算说的是,在pom属性中设置该属性就足够了,基本上是因为它们设置了插件的默认值,例如<source> $ { maven.compiler.source} </ source>
EliuX

这应该是公认的答案。为我工作在的IntelliJ 2018.2在Mac OS 10.13.5
user674669

13

我通过转到项目结构 -> 模块来解决此问题,找到有问题的模块,单击Dependencies选项卡,更改Module SDKProject SDK


9

我只是通过将目标编译版本更改为1.8来修复它。在里面:

文件>>设置>>构建,执行,部署>>编译器>> Java编译器


1
谢谢,维沙尔。我们必须使用Intellij Idea指定项目字节码版本,或者至少指定每个模块的字节码版本。只是在pom.xml中为maven-compiler-plugin设置它并不能解决我的问题。
WebComer


5

就我而言,我通过打开项目的.iml文件(它位于项目根文件夹中并且名称与项目名称相同)并将行更改<orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" /><orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />

我将所有内容配置为此处的其他答案,但是由于某种原因,Idea错误地更新了.iml文件。


2
即使您配置了所有菜单,似乎Intellij有时也不会更新配置文件。使缓存无效并重新启动(在编辑配置文件后),对我来说有用。奇怪。
jah 2016年

1
非常感谢。最终,在尝试并失败了上面指定的所有其他解决方案之后,此方法成功了。
Nitin Bansal

4

我通过修改POM文件来修复它。请注意在投票最高的答案下的最后一条评论。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
</plugin>

源必须与目标匹配。


4

我只是重新导入Maven按钮,然后错误消失了。

在此处输入图片说明


谢谢。这个暗示使它成为
现实

3

如果您使用的是Android-studio 1.3,请按照以下步骤操作-

转到文件 - 项目结构

模块 - 应用程序 - 属性选项卡中,选择 源兼容性 - 1.8

目标兼容性 - 1.8

而且你很好。


3

在您的Gradle应用级别文件>> compileOptions中添加这两行

android {
  compileOptions {
    ...
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    ...
   }
}

谢啦。您的答案奏效了
Solution Spirit

1

在compiler.xml文件下,您将找到:

<bytecodeTargetLevel>
  <module name="your_project_name_main" target="1.8" />
  <module name="your_project_name_test" target="1.8" />
</bytecodeTargetLevel>

您可以为我将目标值从旧的更改为新的,我需要将其从1.5更改为1.8


1

我刚刚花了一段时间来解决同样的问题。唯一对我有用的方法不是使用内置的mvn(3.3.9),而是将其指向外部下载的版本(3.5.0)。终于项目打开了,一切都很好。


1

如果您的模块配置有注释处理器,而其他模块没有配置,则会发生此问题。请为所有模块设置相同的配置,因为它具有循环依赖性。


0

对我来说,问题在于Maven无法找到正确的配置,因为这些项是在父pom中指定的。

更改文件->设置->生成,执行,部署-> Maven->用户设置文件以指向具有适当存储库的自定义设置,可以解决原本隐藏的问题。

通过帮助->显示资源管理器中的日志->单击日志文件(以前仅在控制台中出现标题和“ java.lang.NullPointerException”错误)找到了问题所在。


0

问题的解决方法非常简单。您必须在İdea项目上打开.idea / compiler.xml文件,然后

您应该编写适当的目标版本


0

使用Intellij,并使用Maven,您必须检查Intellij是否已自动导入项目。您可以通过单击编辑器右侧的Maven选项卡进行检查。

在此处输入图片说明

如果您的项目不在此处,请pom.xml通过单击添加文件+

显然,该项目还必须具有以下相关内容<build/>

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

0

如果没有其他答案,请检查您的Module SDK

在将项目SDK更新为1.8,将Javac编译器更新为1.8等之后,我为我弹出了此错误。对我来说,问题所在是“模块SDK”。

(在Linux上)进入File > Project Structure...,然后在打开的窗口中,选择ModulesProject Settings。从列表中选择有问题的模块,然后从Dependencies选项卡中选择并确保Module SDK已正确设置。


0

我已经检查了所有上述内容,但仍然出现错误。

但是重新导入所有Maven项目(在Maven Projects面板中的“重新加载”按钮)对于我来说还是可行的。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.