2015-08-25 5 views
10

Ijede JavaFX Projekt in NetBeans Kompilieren gibt nicht unterstützten major.minor Version 52.0

Aber keiner eine Reihe von ähnlichen Fragen sehen mit den gleichen Umständen wie meins. Ich habe ihre Lösungen trotzdem (wenn relevant) versucht und sie haben nicht geholfen.

Ich hatte eine JavaFX FXML-Anwendung in NetBeans 8.0.2 erstellt und musste das JDK manuell von 1.7 auf 1.8 aktualisieren, um Funktionen zu erhalten, die ich wollte. Ich glaube, dass ich 1.8.0_52 sowohl für die JRE als auch für die JDK verwendet habe und das Projekt gut kompiliert wurde. Dann ist mein Computer benachrichtigt mich eines Updates für Java 8. Jetzt:

[email protected]:~$ 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) 

[email protected]:~$ javac -version 
javac 1.8.0_60 

und plötzlich jede Java 8 FXML Projekt wird die obige Fehlermeldung während der Kompilierung Zeit, auch die Standard-Grund JavaFX FXML Application, die mit NetBeans kommt. Java 7 FXML kompiliert, aber 7 fehlen wichtige Funktionen. Ich habe neue Projekte gestartet, die 8 angeben, und ich habe ein neues Projekt in 7 gestartet und dann auf 8 erhöht: dasselbe Ergebnis.

Ich habe sichergestellt, dass das Source/Binary-Format JDK 8 ist, in der Kategorie Sources und die Java-Plattform ist auf JDK 1.8 in der Kategorie Bibliotheken der Eigenschaften des Projekts festgelegt. Ich kann keine andere Einstellung zum Aktualisieren finden. Ich habe jedes Mal einen sauberen Build versucht, wenn ich eine Einstellung ändere. Der Fehler tritt in einer IDE-generierten Datei jfx-impl.xml auf, die zu groß ist, um in ihrer Gesamtheit zu veröffentlichen, die über 4000 Zeilen ist. Ich poste hier eine Portion. Die classpath="${javafx.ant.classpath}" ist Linie 406, wo der Compiler den Fehler meldet:

<target name="-check-ant-javafx-version" depends="-pre-check-ant-javafx-version, 
     -set-endorsed-javafx-ant-classpath,-set-javafx-ant-classpath" if="do.check.ant-javafx.version"> 
    <echo message="ant-javafx.jar.location = ${ant-javafx.jar.location}" level="verbose"/> 
    <echo message="javafx.ant.classpath = ${javafx.ant.classpath}" level="verbose"/> 
    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" 
     uri="javafx:com.sun.javafx.tools.ant" 
     classpath="${javafx.ant.classpath}"/> 
    <condition property="have-fx-ant-init"> 
     <typefound name="javafx:com.sun.javafx.tools.ant:init-ant"/> 
    </condition> 
    <property name="ant-javafx-version-already-checked-in-jfximpl" value="true"/> 
    <echo message="have-fx-ant-init = ${have-fx-ant-init}" level="verbose"/> 
</target> 

Die Fehlermeldung lautet:

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

Hat jemand eine Idee, was ich vermisst habe? Gibt es einen Fehler in NetBeans oder im 1.8.0_60 SDK oder JRE? Danke für deine Zeit & Rücksicht!

+0

Es bedeutet, dass Sie versuchen, Ihren Code in einer anderen (älteren) Version als Sie es in kompilierten laufen – Stultuske

+0

@stultsuke ich es nicht renne.. Es wurde noch nicht kompiliert. Wie ich schon sagte, habe ich die anderen Artikel überprüft und diese Vorschläge haben nicht geholfen. –

+0

In der Tat, lesen zusätzliche Artikel Ich merke, dass der gleiche Vorschlag in jedem Artikel von verschiedenen Programmierern gemacht wird, und es ist nie derjenige, der als die sinnvolle Antwort ausgewählt ist. –

Antwort

15

Sie müssen netbeans_jdkhome in der Datei netbeans.conf ändern.

  • Schließen Sie NetBeans, wenn es ausgeführt wird.
  • Suchen Sie die Datei C: \ Programme \ NetBeans 7.3 \ etc \ netbeans.conf
  • Ändern Sie den Wert für den Parameter "netbeans_jdkhome" auf die gewünschte JDK Version
    ZB: netbeans_jdkhome = "C: \ Programme \ Java \ jdk1.7.0_21 "
  • Speichern Sie die Datei und starten Sie NetBeans erneut.

Quelle + Ausführlichere Informationen: https://joanpaon.wordpress.com/2013/06/11/how-to-change-netbeans-default-java-platform-2/

+0

Ja, das würde auch funktionieren! Viel weniger Aufwand. –

+0

Das hat für mich funktioniert. Vielen Dank. – Omolara

0

Ich habe JDK 7 deinstalliert, nicht installierte NetBeans, NetBeans neu installiert und neu kompiliert. Keine Fehler mehr. (Nach der Deinstallation habe ich das Installationsverzeichnis und die Einstellungen verlassen. Bei der Neuinstallation musste ich ein neues Verzeichnis erstellen, aber NetBeans muss die alten Einstellungen beibehalten haben, da ich die Einstellungen nicht ändern oder neu hinzufügen musste Plugins). Ich habe dann JDK 7 neu installiert (weil andere Projekte in Java 7 sind), erneut getestet und funktioniert immer noch.