在NetBeans中编译任何JavaFX项目都会返回Unsupported major.minor版本52.0

我看到了许多类似的问题

  • Netbeans 8.0不支持major.minor版本52.0错误
  • 不支持的major.minor版本52.0错误(重复)
  • 运行我编译的JAR:不支持的major.minor版本52.0
  • 即使修复了兼容性,也无法修复不支持的major.minor版本52.0

但没有一个与我的情况相同。 无论如何,我已经尝试了他们的解决方案(相关时),他们没有帮助。

我在NetBeans 8.0.2中创建了一个JavaFX FXML应用程序,并且必须手动将JDK从1.7升级到1.8以获得我想要的function。 我相信我正在使用1.8.0_52用于JRE和JDK,该项目编译得很好。 然后我的计算机通知我Java 8的更新。现在:

mc@MC-Desktop:~$ java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) mc@MC-Desktop:~$ javac -version javac 1.8.0_60 

突然间,任何Java 8 FXML项目在编译时都会收到上述错误消息,甚至是NetBeans附带的标准基本JavaFX FXML Application 。 Java 7 FXML将编译,但7缺少重要function。 我已经开始指定8的新项目,我在7中开始了一个新项目,然后将其升级到8:相同的结果。

我确保源/二进制格式是JDK 8,在Sources类别中,Java Platform在项目属性的Libraries类别中设置为JDK 1.8。 我找不到其他更新设置。 每次更改设置时我都尝试过干净的构建。 该错误发生在IDE生成的文件jfx-impl.xml ,该文件jfx-impl.xml而无法完整发布,超过4000行。 我在这里张贴一部分。 classpath="${javafx.ant.classpath}"是第406行,编译器报告错误:

           

错误消息是:

 /home/chris/Projects/Java/FXMLTimer/nbproject/jfx-impl.xml:3438: The following error occurred while executing this line: /home/chris/Projects/Java/FXMLTimer/nbproject/jfx-impl.xml:406: java.lang.UnsupportedClassVersionError: com/sun/javafx/tools/ant/Permissions : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1136) at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1307) at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1362) at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1323) at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1076) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:278) at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:579) at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:237) at org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:180) at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:428) at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:277) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor169.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor169.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.Project.executeTarget(Project.java:1364) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:286) at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:555) at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153) BUILD FAILED (total time: 7 seconds) 

有没有人知道我错过了什么? NetBeans或1.8.0_60 SDK或JRE中是否存在错误? 感谢您的时间和考虑!

您必须在netbeans.conf文件中更改netbeans_jdkhome。

  • 如果NetBeans正在运行,请将其关闭。
  • 找到文件C:\ Program Files \ NetBeans 7.3 \ etc \ netbeans.conf
  • 将参数“netbeans_jdkhome”的值更改为所需的JDK版本
    例如:netbeans_jdkhome =“C:\ Program Files \ Java \ jdk1.7.0_21”
  • 保存文件并再次启动NetBeans。

来源+更多详细信息: https : //joanpaon.wordpress.com/2013/06/11/how-to-change-netbeans-default-java-platform-2/

我卸载了JDK 7,卸载了NetBeans,重新安装了NetBeans并重新编译。 没有错误了。 (当我卸载时,我离开了安装目录和设置。当我重新安装时,我不得不创建一个新目录,但NetBeans必须保留旧设置,因为我不需要更改首选项或重新添加插件)。 然后我重新安装了JDK 7(因为其他项目都在Java 7中),重新测试并仍在工作。