# Unsupported major.minor version 59.0



## timm4444 (24. Feb 2021)

Hallo Leute, ich bin neu hier und bin nicht sicher ob der Beitrag hierhergehört.

Mein Problem ist, dass ich mit dem Programm Eclipse und dem Ev3 Plugin mein Ev3 mit Java programmieren mochte(mit LeJOS), aber bekomme folgende Fehlermeldung:

```
java.lang.UnsupportedClassVersionError: de/lejos/sample/HelloLeJOS : Unsupported major.minor version 59.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at lejos.internal.ev3.EV3Wrapper.invokeClass(EV3Wrapper.java:51)
    at lejos.internal.ev3.EV3Wrapper.main(EV3Wrapper.java:46)
```

wenn ich den Code ausführen möchte:

```
package de.lejos.sample;
import lejos.hardware.lcd.LCD;
public class HelloLeJOS {

    public static void main(String[] args) {
      
        LCD.drawString("Hallo Welt", 0, 0);
      
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
```

Ich habe auch schon versucht bei Window -->Prefernces --> Java --> Compiler --> compiler compliance Level etwas umzustellen, aber das hat auch nichts gebracht.
Hat jemand eine Idee oder das gleiche Problem gehabt?


----------



## LimDul (24. Feb 2021)

Eigentlich sollte es reichen das Compilance Level auf 1.8 zu stellen. Auf was hast du es aktuell stehen?

Edit: Und schau auch mal in den Eclipse Project Settings (Rechtsklick auf das Projekt, Settings) nach, was da steht. Das hat Vorrang.


----------



## kneitzel (24. Feb 2021)

Wann bekommst du genau diese Meldung?

Wenn du es beim Ausführen bekommst, dann kann es sein, dass du zum Übersetzen Java 15 verwendet hast (Version 59) aber beim ausführen eine ältere Version verwendest.

Da könnte es ausreichen, die alte Java Version zu deinstallieren. Oft ist der Fehler, dass einfach auch noch ein JRE installiert wurde und Oracle da halt das letzte mit Java 8 angeboten hat....

Den compliance Level müsstest du dann nicht anpassen sondern einfach nur darauf achten, dass du keine alte Runtime mehr auf dem Rechner hast.


----------



## LimDul (24. Feb 2021)

kneitzel hat gesagt.:


> Wann bekommst du genau diese Meldung?
> 
> Wenn du es beim Ausführen bekommst, dann kann es sein, dass du zum Übersetzen Java 15 verwendet hast (Version 59) aber beim ausführen eine ältere Version verwendest.
> 
> ...


Wenn ich das Richtig sehe, geht es hier um Lego zu programmieren - da wird es schwer der Lego hardware ein neueres Java beizubringen  (Wobei ich nicht weiß, wo da tatsächlch die JVM läuft)


----------



## kneitzel (24. Feb 2021)

Ok, das hatte ich komplett übersehen. Damit ist meine Aussage natürlich obsolet.


----------



## timm4444 (25. Feb 2021)

Erstmal danke für die vielen schnellen Antworten.

Ich bekomme die Fehlermeldung, wenn ich das Programm ausführen möchte.

Das Compilance Level habe ich schon mal versucht auf 1.7 und 1.8 zu stellen, aber das hat nichts gebracht. Er ist jetzt wieder standartmäßig auf 15.

Ich finde bei Rechtsklick auf mein Projekt (im Project Explorer?)keine Spalte mit Setting und wie deinstalliere ich eine alte Javaruntime?


----------



## Scrackey (8. Jan 2022)

kneitzel hat gesagt.:


> Wann bekommst du genau diese Meldung?
> 
> Wenn du es beim Ausführen bekommst, dann kann es sein, dass du zum Übersetzen Java 15 verwendet hast (Version 59) aber beim ausführen eine ältere Version verwendest.
> 
> ...


Hallo, ich habe JDK 16 installiert und die neuste JRE, also 8.x . 
Bei mir kommt ein ähnlicher Fehler. Da Java aber keine neuere JRE-version anbietet, weiß ich nicht, was ich tun kann um mein Programm zum laufen zu bringen.


----------



## kneitzel (8. Jan 2022)

Scrackey hat gesagt.:


> Hallo, ich habe JDK 16 installiert und die neuste JRE, also 8.x .
> Bei mir kommt ein ähnlicher Fehler. Da Java aber keine neuere JRE-version anbietet, weiß ich nicht, was ich tun kann um mein Programm zum laufen zu bringen.


Aufpassen! Oracle hat nach Version 8 aufgehört, JREs separat anzubieten! Das ist somit ein Asbach Uralt JRE!

Ein JDK enthält auch immer das JRE. Wenn Du also ein JDK installiert hast, dann brauchst Du keinerlei JRE mehr!

Also was bedeutet das für Dich?
- JRE deinstallieren
- Danach ggf. das JDK reparieren oder deinstallieren/neu installieren.

Die aktuelle Java Version ist ansonsten 17. Bei der Gelegenheit macht e also ggf. Sinn, das 16er JDK zu deinstallieren und das 17er zu installieren.

Statt auf Downloads von Oracle zuzugreifen kann es auch Sinn machen, ein OpenJDK zu nutzen. Ich greife gerne auf Adoptium zurück. (Da bekommt man übrigens auch JREs, aber wie oben schon gesagt: Brauchst Du nicht. Du brauchst nur das JDK!)


----------

