# UnsupportedClassVersionError



## MichiM (13. Jul 2006)

Hallo,

weiß jemand auf Anhieb was mit dieser Fehlermeldung anzufangen und vor allem, wie man den Fehler behebt?



> java.lang.UnsupportedClassVersionError: StromkreisApplet (Unsupported major.minor version 49.0)
> at java.lang.ClassLoader.defineClass0(Native Method)
> at java.lang.ClassLoader.defineClass(Unknown Source)
> at java.security.SecureClassLoader.defineClass(Unknown Source)
> ...




Hab unter:

http://www.java.de/forum/message/26678/

u.a. auf eine ähnliche Frage schon den Hinweis



> Hi, das Programm wurde mit der -target 1.4 Option übersetzt, d. h. es läuft nur mit einer JRE Version größer oder gleich 1.4. Beim Einsatz von JRE Version 1.3 oder älter bekommst Du die von Dir erwähnte Fehlermeldung.



entdeckt.

Ich hab mit JRE 1.5 kompiliert. Wenn ich mit 1.4 starte, krieg ich den Fehler...
Hab allerdings nirgends eine Option "-target " gefunden, auch nicht beim Absuchen der Dateien im eclipse (verwende Version 3.2). Ich würde meine Projekte gern so kompilieren, dass sie mit möglichst allen Versionen laufen, also wenigstens mit der 1.4er noch, die wahrscheinlich immer noch bei den meisten läuft.  Wie bekommt man das hin?

Gruß Michi


----------



## The_S (14. Jul 2006)

Naja, wenn du compilierst musst du auch mit der selben (oder neuer) Version ausführen.


----------



## byte (14. Jul 2006)

> Ich hab mit JRE 1.5 kompiliert. Wenn ich mit 1.4 starte, krieg ich den Fehler...



Und genau da liegt der Fehler! Du kannst keine mit 1.5 kompilierten Programme mit 1.4 starten. Wenn Du zu 1.4 kompatibel sein willst, dann musst Du mit 1.4 kompilieren. Dann kannst Du sicher sein, dass es auch unter 1.5 läuft.


----------



## Kola (14. Jul 2006)

Eclipse:

Window->Preferences->Java->Compiler

Da kannst du die Einstellungen vornehmen


----------



## MichiM (14. Jul 2006)

So ganz hauts nicht hin. Hab jetzt schon sonstwas probiert in der eclipse-Umgebung...

x mal gebuildet, die .class-Dateien gelöscht, Build-Optionen überprüft (worauf ja auch nochmal kompiliert wurde), aber am Ende krieg ich immer entweder die Meldung



> Laden: Klasse StromkreisApplet.class nicht gefunden


oder den genannten UnsupportedClassVersionError... Ich habe dazu die Version 1.4.2 unter "Installed JREs" ausgewählt. Muss ich noch irgendwo noch separat einstellen, dass mit dieser Version auch ausgeführt werden soll?

Was ich feststelle: Der eclipse merkt nicht so recht, wann er die .class-Dateien neu erstellen muss. Ich hab zwar gewählt, dass er immer builden soll, wenn nötig, aber wenn ich ausführe und irgendeine nötige .class existiert nicht (weil ich sie manuell gelöscht hab - soll man wohl nicht?  :?  :wink: ), dann bringt er eben:



> Laden: Klasse StromkreisApplet.class nicht gefunden


,

statt einfach mal zu versuchen, sie zu erstellen. Wenn ich das dann auf Umwegen irgendwie veranlasse (irgendwo in den Preferences was temporär umstellen, sodass er sich gezwungen fühlt, alles neu zu kompilieren und anschließend wieder zurückstellen), hab ich zwar alle nötigen .class-Dateien, aber die Version passt ihm nicht. Versteh ich nicht. Er verwendet ja auch die 1.4.2er, steht ja direkt über der Konsole:



> <terminated>...\Java\j2re1.4.2_12\bin\javaw.exe



Wie krieg ich es nun hin, dass das Projekt einfach mal komplett mit 1.4 kompiliert und gestartet wird?  
Stell ich auf die 1.5er um, wird kompiliert und erfolgreich gestartet. Probier ich es mit der 1.4, geht nichts. Irgendwo außer in den .class-Dateien müsste also noch vermerkt sein, dass da die 1.5er schon aktiv war?


----------



## byte (14. Jul 2006)

Du brauchst in Eclipse nie Class Files per Hand zu löschen. Prüfe zunächst, ob eine 1.4 JRE in Eclipse existiert (Installed JREs). Dann einfach beim entsprechenden Projekt das JRE wechseln. Danach kompiliert Eclipse das Projekt automatisch neu mit der neuen (alten) JRE. Es reicht NICHT, nur den Compiler Level auf 1.4 zu stellen.

Falls das alles nicht funktioniert, dann mach ein neues Projekt und kompiere die Java-Files da rein. Pass dabei aber auf, dass Du nicht die .classpath Datei mitkopierst. Denn wahrscheinlich ist die dann fehlerhaft bei dir.


----------



## MichiM (14. Jul 2006)

Unter "Installed JREs" hab ich die 1.4.2_12 und die 1.5.0_07 eingetragen. Ausgewählt ist nun die 1.4er. 
"Project" -> "Clean" ... -> "Build Project" führt noch nicht zum Ziel. Irgendwo in den Projekteinstellungen, wie Du sagst, oder ganz in der Nähe muss da noch ein Punkt versteckt sein, wo ich die 1.4er wohl auch noch auswählen muss, aber ich find diesen Punkt nicht... Der dort zu findende Build Path weist zumindest schon mal auf "JRE System Library [j2re1.4.2_12]". Hm.


----------



## MichiM (14. Jul 2006)

Ok, hab das Projekt im eclipse mal entfernt und neu angelegt. Beim Neu-anlegen konnte ich dann auch die Version usw. wählen und nun geht zumindest das mal. Allerdings muss ich schon sagen, das ich die ganze Verwaltung im eclipse als ziemliches Gewurschtel empfinde. Erst hat er sich schon beschwert, weil ihm da eine .java-Datei im Verzeichnis fehlte, die gar nicht zum Projekt gehörte. Hab ich nie eingegliedert. Deshalb wollte er auf einmal nicht mehr kompilieren. Ein Theater... Projekt also neu angelegt und das geht nun.

Allerdings gleich nächstes Problem: Ich hatte zuerst bei der Installation der 1.4er die Browser-Plugins nicht mitinstalliert, sodass ich im Browser nicht zwischen der 1.4 und der 1.5 wählen konnte. Da ich nun keinen Schimmer hatte, wie man die ohne Neuinstallation nachinstallieren könnte, hab ich die 1.4er einfach mal schnell deinstalliert und neu installiert. Bei der Neuinstallation hieß es "Java VM läuft schon, muss erst beendet werden." Hab ich gemacht und losinstalliert. Läuft zwar nun alles auch, aber - nun erscheint das Plugin-Symbol nicht mehr, wenn ich ein Applet starte, weder im Firefox noch im IE.

http://www.java.com/de/download/help/javaconsole.xml



> Anzeigen der Java-Konsole für den Browser
> 
> Internet Explorer
> 
> ...



So einen Eintrag "Sun Java-Konsole" gibts in meinem Firefox unter "Extras" gar nicht.

Was ist da jetzt wieder schiefgelaufen? :lol:

Im Ordner bin von der 1.5er Version fand ich dann javacpl, mit dem ich die Konsole zwar wieder herbrachte, aber im Ordner der 1.4er gibts das nicht... Ich kann nun also im Browser nur mit der 1.4er testen, nicht aber mit der 1.4er, die ich gerne unterstützen würde. Was tun?


----------



## thE_29 (14. Jul 2006)

@byto: Glaube schon das es auch ohne 1.4er JVM geht, weil man Dinge auch mit -target 1.1 für die MSJVM kompilieren kann und ich habe sicher kein 1.1 oben ^^


----------



## byte (14. Jul 2006)

Hab erst kürzlich feststellen müssen, dass es nicht geht. Zumindest mit SE5 Compiler Level 1.4 kompiliert und dann auf 1.4er JRE ausgeführt => Unsupported Major Minor...


----------



## L-ectron-X (15. Jul 2006)

thE_29 hat gesagt.:
			
		

> @byto: Glaube schon das es auch ohne 1.4er JVM geht, weil man Dinge auch mit -target 1.1 für die MSJVM kompilieren kann und ich habe sicher kein 1.1 oben ^^


Geht nur bis einschließlich Java 1.4.2.


----------



## thE_29 (15. Jul 2006)

Aha...

Naja, ich kompiliere ja meistens nur mit 1.4.2..

Selten mache ich (beruflich) 1.5 Apps!


----------

