Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich

dapzoo

Mitglied
Hallo,

das Konvertieren zur .class Datei via javac dateiname.java funktioniert soweit. Jedoch erscheint eine Fehlermeldung, wenn ich die .class Datei via java dateiname ausführen will:

java.lang.UnsupportedClassVersionError: VerdienstJob has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 54.0

Ich hab bereits versucht die Compliance-Stufe in Eclipse eine Stufe niedriger zu stellen, sodass es mit meiner installierten JRE 10.0.2 kompatibel sein müsste(?), vergeblich. Was mach ich da? Java SE DK10, statt 11, zu installieren scheint mir irgendwie auch nicht das Richtige zu sein.
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Naja, du scheinst offensichtlich ein 10er JRE zu haben und zu versuchen, deine Klasse mit diesem JRE (bzw. dem darin enthaltenen java Executable) zu starten. Was wird denn ausgegeben, wenn du statt `java DeineHauptklasse` `java -version` ausführst?
Ich hab bereits versucht die Compliance-Stufe in Eclipse eine Stufe niedriger zu stellen, sodass es mit meiner installierten JRE 10.0.2 kompatibel sein müsste(?), vergeblich.
Ist VerdienstJob auch eine Klasse, die du selber aus Java-Sourcen heraus kompilierst, oder kommt es eventuell aus einer bereits kompilierten Klasse innerhalb einer Jar-Datei?
Und hast du in den Eclipse Compiler Einstellungen auch wirklich "Generated .class files compatibility:" auf "10" gesetzt?
 

dapzoo

Mitglied
Naja, du scheinst offensichtlich ein 10er JRE zu haben und zu versuchen, deine Klasse mit diesem JRE (bzw. dem darin enthaltenen java Executable) zu starten. Was wird denn ausgegeben, wenn du statt `java DeineHauptklasse` `java -version` ausführst?

Ist VerdienstJob auch eine Klasse, die du selber aus Java-Sourcen heraus kompilierst, oder kommt es eventuell aus einer bereits kompilierten Klasse innerhalb einer Jar-Datei?
Und hast du in den Eclipse Compiler Einstellungen auch wirklich "Generated .class files compatibility:" auf "10" gesetzt?

Das hier:
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
 

dapzoo

Mitglied
Ähm, huch.

Ist VerdienstJob auch eine Klasse, die du selber aus Java-Sourcen heraus kompilierst, oder kommt es eventuell aus einer bereits kompilierten Klasse innerhalb einer Jar-Datei?
Und hast du in den Eclipse Compiler Einstellungen auch wirklich "Generated .class files compatibility:" auf "10" gesetzt?
Ich hab ganz normal über Eclipse ein neues Projekt erstellt, darin diese Klasse geschrieben und gespeichert. (Wobei ich nicht weiß ob das die Frage beantwortet, ich bin noch völliger Neuling. :D)

Zu der anderen Frage, hier sind meine Einstellungen. Ich hab es einmal mit Stufe 9 und einmal mit 10 probiert. Bei beiden die gleiche Fehlermeldung.

properties.PNG
 

httpdigest

Top Contributor
Und du bist auch sicher, dass du die Klasse startest, die durch Eclipse gebaut wurde? Wenn du mal die Java-Klasse ein bisschen anpasst, speicherst, und dann auf das Dateiänderungsdatum (im Dateimanager deiner Wahl - in den Dateieigenschaften) schaust, kommt das auch hin? Lösche die .class Datei auch einfach mal und klicke in Eclipse auf Menü "Project" -> "Clean..." (mit OK bestätigen). Erscheint die .class Datei dann wieder?
Weil, das Ganze passt irgendwie nicht zusammen gerade.
 

dapzoo

Mitglied
Und du bist auch sicher, dass du die Klasse startest, die durch Eclipse gebaut wurde? Wenn du mal die Java-Klasse ein bisschen anpasst, speicherst, und dann auf das Dateiänderungsdatum (im Dateimanager deiner Wahl - in den Dateieigenschaften) schaust, kommt das auch hin? Lösche die .class Datei auch einfach mal und klicke in Eclipse auf Menü "Project" -> "Clean..." (mit OK bestätigen). Erscheint die .class Datei dann wieder?
Weil, das Ganze passt irgendwie nicht zusammen gerade.
Ja, da bin ich mir sicher. Ich habs ja auch bereits mit verschiedenen, neu erstellten Klassen versucht. Es muss ja dann die Klasse sein, die durch Eclipse gebaut wurde, wenn die Klasse vorher gar nicht existent war, oder? Oder überseh ich jetzt was

BTW: 10 hat „end of Support“ erreicht, warum nutzt du nicht das aktuelle 11er als JRE? ;)
Gibt es denn eine 11er JRE Version?
 

dapzoo

Mitglied
Ja. Entweder das normale JDK (was du ja anscheinend installiert hast) nutzen oder explizit ein JRE aussuchen: https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/latest
Ich hab nun die JRE deinstalliert, das JDK (aktuellste Version) neu installiert und es nochmals probiert. Obwohl ich bei den Systemumgebungsvariablen bei Path den Pfad zum JDK bin Ordner gespeichert habe, kommt nun folgende Meldung:

C:\Users\User\eclipse-workspace\Tutorial\src\Typumwandlung>java VerdienstJob
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

Mir ist diesmal auch aufgefallen, dass bei JDK eine "private JRE" mit installiert wird. Aber es scheint nicht gefunden zu werden...

Edit: Wieder alles deinstalliert, Systemvariable von Java Pfaden entfernt, OpenJDK 11 installiert und dem hier gefolgt:

  1. Set a PATH:
    • Select Control Panel and then System.
    • Click Advanced and then Environment Variables.
    • Add the location of the bin folder of the JDK installation to the PATH variable in System Variables.
    • The following is a typical value for the PATH variable: C:\WINDOWS\system32;C:\WINDOWS;"C:\Program Files\Java\jdk-11\bin"
  2. Set JAVA_HOME:
    • Under System Variables, click New.
    • Enter the variable name as JAVA_HOME.
    • Enter the variable value as the installation path of the JDK (without the bin sub-folder).
    • Click OK.
    • Click Apply Changes.

Jetzt wird mir via java -version alles korrekt angezeigt.

Allerdings tritt nun ein neuer Fehler auf, wenn ich die .class Datei ausführen will (aus der CMD kopiert):


C:\Users\user\eclipse-workspace\Tutorial\src\Typumwandlung>javac VerdienstJob.java

C:\Users\user\eclipse-workspace\Tutorial\src\Typumwandlung>java VerdienstJob

Error: Could not find or load main class VerdienstJob
Caused by: java.lang.NoClassDefFoundError: Typumwandlung/VerdienstJob (wrong name: VerdienstJob)

Das Übersetzen in eine class Datei hat er noch geschafft. Das Ausführen selbiger plötzlich nicht mehr.
 
Zuletzt bearbeitet:

dapzoo

Mitglied
Klappt nun plötzlich. Woran es genau lag, kann ich nicht sagen. Ich hab das Compliance Level mehrmals verstellt, alle alten Projekte gelöscht, ein neues erstellt, den Build Path nochmals gecheckt,... ja, klappt nun auf jeden Fall endlich. :)
 

Neumi5694

Top Contributor
Ich arbeite mit Netbeans, weiß also nicht, wofür der Compilence Level gedacht ist, in Netbeans wähl ich die JDK aus, mit der kompiliert werden soll.
Prinzipiell gilt: Kompiliere mit der JDK, die du als Mindest-JRE-Version voraussetzt. Und dann stell natürlich auch sicher, dass das Ziel-System mit der JRE arbeitet.
 

mihe7

Top Contributor
Das Compliance Level dürfte nichts anderes als die Angabe sein, welcher Java-Version der Quellcode entspricht (-source-Switch von javac)

Hat man z. B. Code, der "assert" als Bezeichner verwendet, wäre das seit Java 1.4 ein Fehler.
Beispiel:
Java:
public class Test {
    public static void assert(boolean x) {}
}
Übersetzung:
Code:
~$ javac Test.java
Test.java:6: error: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier
    public static void assert(boolean v) {
                       ^
  (use -source 1.3 or lower to use 'assert' as an identifier)
1 error

# dagegen
~$ javac -source 1.3 Test.java
warning: [options] bootstrap class path not set in conjunction with -source 1.3
warning: [options] source value 1.3 is obsolete and will be removed in a future release
warning: [options] target value 1.4 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Test.java:6: warning: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier
    public static void assert(boolean v) {
                       ^
  (use -source 1.4 or higher to use 'assert' as a keyword)
5 warnings
Das produziert hier ein 1.4er-class-File:
Code:
~$ file Test.class
Test.class: compiled Java class data, version 48.0 (Java 1.4)
Nimmt man noch den target-Switch hinzu (javac -source 1.3 -target 1.8 Test.java), erhält man
Code:
~$ file Test.class
Test.class: compiled Java class data, version 52.0

Wann braucht man das? So gut wie nie.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B .class-File mit Reflection auslesen Java Basics - Anfänger-Themen 8
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
M Java Class File lässt sich nicht ausführen Java Basics - Anfänger-Themen 3
H Bad class file in *.jar Java Basics - Anfänger-Themen 19
E Executable jar-file findet class nicht Java Basics - Anfänger-Themen 12
N Jar-File soll externe class-Datei benutzen Java Basics - Anfänger-Themen 8
A Compile the Source File into a .class File Java Basics - Anfänger-Themen 3
G Class File "lesen" Java Basics - Anfänger-Themen 4
M class-File anschauen möglich? Java Basics - Anfänger-Themen 8
B bad class file Java Basics - Anfänger-Themen 2
N Class-Objekt aus File-Objekt erzeugen? Java Basics - Anfänger-Themen 14
G "bad class file" Problem Java Basics - Anfänger-Themen 13
S methode in class file ansprechen? Java Basics - Anfänger-Themen 6
T IntelliJ / SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". Java Basics - Anfänger-Themen 4
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
wilmaed protected class Java Basics - Anfänger-Themen 0
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
N class in class Java Basics - Anfänger-Themen 13
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
M Scanner class Java Basics - Anfänger-Themen 6
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
J Gestaltung der GUI.class Java Basics - Anfänger-Themen 1
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
J Erste Schritte .class datei in meine form inkludieren Java Basics - Anfänger-Themen 3
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
M Class Datein aus einen Unterordner verwenden Java Basics - Anfänger-Themen 2
C class in main aufrufen (SWT Oberfläche) Java Basics - Anfänger-Themen 5
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
M Class nach Namensänderung nicht mehr vorhanden Java Basics - Anfänger-Themen 6
P .class 2 .exe ? Java Basics - Anfänger-Themen 5
N Compiler-Fehler HundTestlauf class Fehler Java Basics - Anfänger-Themen 4
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
H Umgebungsvariable In DOS-Box läuft die fehlerfreie Class-Datei nicht. Java Basics - Anfänger-Themen 5
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
J Interface compatible to a class Java Basics - Anfänger-Themen 7
Phil42 "Local variable i is accessed from within inner class" Java Basics - Anfänger-Themen 3
F .class expected Java Basics - Anfänger-Themen 3
S Erste Schritte Ausführen einer Class Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben