javac:无效的目标版本:1.8


87

我最近下载了NetBeans随附的JDK 1.8.0.0_06。然后,我发现我在Java 1.7中开发的JavaFx项目无法在Java 1.8中进行编译,因此我将JDK降级为1.7。我还是无法使它工作/编译。我收到此错误:

javac: invalid target release: 1.8
Usage: javac <options> <source files>

我真的很困,不胜感激。


1
如果您要下台,则也将项目的源也更改为1.7,右键单击,在Project -> Properties -> Sources window此处设置1.7
Jigar Joshi 2014年

您是@Jigar Joshi的救星!!!再次感谢*****。非常感谢。您可以将您的回答作为答案,以便我接受。哇!再次谢谢你。已经被卡了这么久了!
Program-Me-Rev

如果您的项目无法在Java 1.8下编译,则您可能犯了非常严重的错误(例如,在其他问题中发布的代码中,UI组件具有静态字段,这是一个严重的设计错误)。解决此问题可能比仅还原到将来某个时候许多用户可以从中升级的版本更好。
James_D

你说得对@James_D。这是我在Java中的第一个项目。我几乎自学了编程,到目前为止,还没有完全避免使用静态成员,接口以及有关多态的其他知识。我的项目太大,无法一次进行编辑。我打算对其进行编辑,并在完成其他其余区域时逐步通过Spring进行依赖注入。这是一个痛苦的教训,但经验丰富。
Program-Me-Rev

1
有Java版本1.8.0、1.8.0_05和1.8.0_11,但是没有1.8.0.0_06这样的东西。
戴维·康拉德

Answers:


33

如果您要下台,也可以将项目的源代码也更改为1.7,

right click on your Project -> Properties -> Sources window 

1.7在这里设置

注意:但是我建议您弄清楚为什么它在1.8上不起作用


66

对于IntelliJ14,您可能需要更改所使用的JDK的字节码版本(在全局设置中):

在此处输入图片说明


不适用于我,将目标字节码版本更改为1.8,但得到相同的错误
Tribbloid

但是问题是关于Netbeans的?
Jolta '18 -10-26

27
  1. 下载JDK 8
  2. 编辑您的env var,JAVA_HOME以指向新安装的JDK 1.8:R依次单击“我的电脑”->“属性”->“高级系统设置”->“环境变量” JAVA_HOME,然后在列表中查找并将其值设置为类似以下内容:

    C:\Program Files\Java\jdk1.8.0_31
  3. 查找旧版本并在PATH变量中对其进行编辑。

  4. 可能您需要重新启动系统。

需要被完成。


23

如果在运行Gradle(或Maven)任务时发生此错误,则需要修改该构建工具配置,以指向您按照以下方法安装的Java JDK 1.8:

文件->设置->构建,执行,部署->构建工具-> Gradle

在那里,您检查Linked Gradle项目是您正在处理的项目,然后选择Gradle JVM(将gradle项目导入IntelliJ时错过了这一点)

在此处输入图片说明

在导入Gradle(或Maven)项目以正确设置目标JVM时,请记住以下几点: 在此处输入图片说明


14

您的javac没有指向正确的Java。

使用以下命令检查您的javac指向的位置-

update-alternatives --config javac

如果未指向要编译的javac,请将其指向“ / JAVA8_HOME / bin / javac”,或者指向要编译的Java。


为什么为-1,我会遇到同样的问题,那是因为我的javac未设置为正确的Java版本?
Piyush Jajoo 2015年

请注意,从不同发行版中选择java和javac的方式可能会破坏配置!
Audrius Meskauskas 2015年

9

大多数情况下,此类问题是由于Java版本不正确而发生的。确保您的PATH和JAVA_HOME变量指向正确的版本。


是的-这也是我的原因
莫格比人(Mograbi)

4

Maven设置:

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

4

以前的解决方案都没有对我有用。

我通过编辑.idea / compiler.xml解决了这一问题。坏模块的“额外”(1)和(2)副本具有不同的目标。我删除了多余的条目,并将本节中的目标更改为1.8,并且可以正常工作。


这也为我解决了。
davidmerrick

2

对于2017年12月18日之前的IntelliJ IDEA Ultimate最新版本,如果上述建议不起作用,请尝试以下操作:右键单击该项目,然后导航到“打开模块设置”。打开它,然后从下拉列表中更改“语言级别”。


还要确保在“模块设置”的“依赖项”选项卡下,选择了正确的模块SDK。
Rene Juuse


1

如果您要下台,也可以将项目的源代码也更改为1.7,

右键单击“项目”->“属性”->“源”窗口,然后在此处设置1.7” Jigar Joshi

也转到build-impl.xml并寻找该属性,excludeFromCopy="${copylibs.excludes}"并在我的代码上的第827行处删除该属性,但我在其他行上看到了它

对我来说是从MAC OS Java 1.8到WIN XP Java 1.7的代码


1

另外,我检查了pom.xml并进行了更改

<java.version>1.8</java.version>

<java.version>1.7</java.version>

Gracias,这对我来说很固定,非常简单。

1

我在netbeans中遇到了同样的问题,但是在cmd窗口中mvn build可以。对我来说,更改netbeans的JDK(如下所示,在netbeans.conf中)后,问题解决了,

netbeans_jdkhome =“ C:\ Program Files \ Java \ jdk1.8.0_91”


编辑:似乎这里提到:netbeans错误236364


1

我在IntelliJ IDEA社区中使用Maven遇到了同样的问题,我不得不通过在“项目”选项卡-> Maven->重新导入中右键单击该项目来重新导入该项目。


0

安装更新版本的IDEA社区(2018.3而不是2017.x)解决了我的问题,但出现了相同的错误,但Java版本为:11。重新导入对我没有用。但是值得一试。

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.