ubuntuusers.de

Fehlermeldung beim ausführen von Java-Programmen in der Konsole

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

Elwedridsch

Anmeldungsdatum:
13. November 2013

Beiträge: 126

Hallo miteinander,

ich muss beruflich die Programmiersprache Jave lernen und dazu habe ich mir OpenJDK 8 auf meinem Computer unter Ubuntu installiert. Bei meiner Version braucht man dazu ein PPA. Das ist aber alles kein Problem gewesen und sämtliche Pakete habe ich mit

sudo apt-get install...

installiert. Nun habe ich mein Programm mit

javac

in Binärcode übersetzt und im gleichen Verzeichnis eine Datei mit der Endung

Programm.class

gefunden. Vor dem übersetzen war ich natürlich in das Verzeichnis gewechselt in der die Quelldatei abgespeichert war. Nun habe ich die Datei mit der Endung ".class" (ohne das Verzeichnis in der Konsole zu wechseln) versucht mittels

java Programm

auszuführen. Es ist die einzige Datei, welche nach dem Übersetzen neu entstanden ist. Also muss es die richtige sein. Leider bekomme ich folgende Fehlermeldung:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Programm : Unsupported major.minor version 52.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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Was habe ich denn jetzt nun falsch gemacht? Fehlt vielleicht etwas bei meiner Installation oder muss ich noch irgendwelche Einstellungen machen?

Ich selber bin noch nicht lange mit Java zugange und hoffe deswegen auf ein wenig Unterstützung von fortgeschrittenen Anwendern.

Gruß Elwedridsch

Lookbehind

Avatar von Lookbehind

Anmeldungsdatum:
28. Januar 2010

Beiträge: 1070

Scheint als wäre mit deiner main Methode was nicht in Ordnung. Was genau lässt sich mangels Quellcode nicht sagen.

Kompiliert das Programm denn ohne Fehlermeldungen? Läuft es auf anderen Plattformen?

OldNewbie

Anmeldungsdatum:
15. Januar 2008

Beiträge: 57

Wohnort: Berlin

Hallo Elwedridsch,

Es scheint, dass

1
java Programm 

nicht vom Java 8 - Runtime sondern von einem älteren ausgeführt wird.

Gib mal

1
java -version

in die Konsole ein. Dann siehst Du die Version des JRE, welches gestartet wird.

Grüße, H.

Elwedridsch

(Themenstarter)

Anmeldungsdatum:
13. November 2013

Beiträge: 126

Okay

Also: Das Programm habe ich nicht selber geschrieben. Es liegt einem Buch als Software bei. Und einmal hier die Version:

java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

Das Buch ist in der Tat schon etwa 2 Jahre alt. Aber ist das denn so schlimm wenn da (ob nun gewollt oder eben nicht) mit einer älteren Version gearbeitet wird? Das kompilieren lief übrigens fehlerfrei.

Danke für eure Hilfe schon mal.

Gruß Elwedridsch

OldNewbie

Anmeldungsdatum:
15. Januar 2008

Beiträge: 57

Wohnort: Berlin

Hallo Elwedridsch,

Elwedridsch schrieb:

Okay

Also: Das Programm habe ich nicht selber geschrieben. Es liegt einem Buch als Software bei.

Das ist nicht schlimm, tut aber hier auch nichts zur Sache.

Und einmal hier die Version:

java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

Das Buch ist in der Tat schon etwa 2 Jahre alt. Aber ist das denn so schlimm wenn da (ob nun gewollt oder eben nicht) mit einer älteren Version gearbeitet wird? Das kompilieren lief übrigens fehlerfrei.

Was passiert ist: Du hast das Programm mit dem JDK von Java 8 übersetzt (schreibt Du wenigstens) und versuchst es nun mit einem JRE von Java 7 auszuführen. Das geht nicht.

Danke für eure Hilfe schon mal.

Da ich nicht weiß, ob das Programm Features von Java 8 benutzt, kann ich nicht genau sagen, welchen Weg ich zur Problembehebung gehen würde. Es kommen aus meiner Sicht zwei [Edith: drei] Dinge in Frage:

  1. Übersetzten der Programms mit Java 7

  2. Ausführen des Programms mit Java 8

  3. Mit dem JDK von Java 8 Klassen für ältere JRE erzeugen

Für den zweiten Fall solltest Du Dir mal das Alternativen-System von Ubuntu anschauen. Dort steht beschrieben, wie man bei mehreren Versionen installierter Java-Umgebungen eines einstellt. Oder Du arbeitest beim Aufruf mit dem vollen Pfad zum Java - Runtime der Version 8.

Das dritte geht z.B. so:

1
javac -target 1.7 Programm.java

Gruß Elwedridsch

Zurück, H.

Elwedridsch

(Themenstarter)

Anmeldungsdatum:
13. November 2013

Beiträge: 126

Ich wollte nicht den Eindruck erwecken ich wüsste mit welcher Version ich denn jetzt nun kompiliert habe. Ehrlich gesagt wäre mir am liebsten ich hätte einfach genau eine Java-Version auf meinem PC. Aber auf jeden Fall habe ich OpenJDK 8 aus den PPA geladen. Das kann ich mit Bestimmtheit sagen. Woher sehe ich denn was genau bei

java -version

denn jetzt 7 und was 8 ist. Wenn es eine Möglichkeit gäbe Java 7 zu löschen, wäre das schon eine feine Sache momentan.

Ich bekomme beim Kompilieren mit 1.7 folgende Fehlermeldung:

javac -target 1.7 Programm.java
javac: target release 1.7 conflicts with default source release 1.8

Gruß Elwedridsch

OldNewbie

Anmeldungsdatum:
15. Januar 2008

Beiträge: 57

Wohnort: Berlin

Hallo Elwedridsch,

Elwedridsch schrieb:

Ich wollte nicht den Eindruck erwecken ich wüsste mit welcher Version ich denn jetzt nun kompiliert habe.

Du hast ganz sicher mit dem javac aus dem Java 1.8 (oder auch Java 8) kompiliert. Das sagt dem versierten Suchmaschinenbediener schon die Fehlermeldung aus Deinem ersten Posting.

Ehrlich gesagt wäre mir am liebsten ich hätte einfach genau eine Java-Version auf meinem PC. Aber auf jeden Fall habe ich OpenJDK 8 aus den PPA geladen. Das kann ich mit Bestimmtheit sagen. Woher sehe ich denn was genau bei

java -version

Das Ergebnis, was Du gezeigt hast, sagt, dass Dein System derzeit den Java-Interpreter von Java 7 (aka Java 1.7) verwendet.

denn jetzt 7 und was 8 ist. Wenn es eine Möglichkeit gäbe Java 7 zu löschen, wäre das schon eine feine Sache momentan.

Du musst Java 7 nicht löschen, sondern nur Dein System dazu bringen, beim Ausführen der Java-Klasse auch das JRE aus dem JDK8 zu verwenden. Dazu diente der Link zum Alternativen-System, den ich im vorangegangen Post beigefügt hatte.

Du kannst das auch mit den Umgebungsvariablen für Java (z.B. JAVA_HOME) regeln. Auch das ist sicher im Wiki hier beschrieben Java/Tipps.

Zu der Fehlermeldung, wenn Du versuchst, mit dem JDK8 Klassen für Java 7 zu erstellen, habe ich herausgefunden, dass

1
javac -target 1.7 -source 1.8 Programm.java

helfen sollte. Ich würde aber sicherlich mit dem Alternativen-System einfach einstellen, dass Java mit dem JRE8 ausgeführt wird.

Gruß Elwedridsch

Grüße, H.

Elwedridsch

(Themenstarter)

Anmeldungsdatum:
13. November 2013

Beiträge: 126

Okay,

ich versuche das jetzt auf jeden Fall erst mal bevor ich hier weiter rumquängele. 🙄 Danke für deine Hilfe auf jeden Fall schon mal.

Gruß Elwedridsch

Elwedridsch

(Themenstarter)

Anmeldungsdatum:
13. November 2013

Beiträge: 126

Hey,

da bin ich noch mal. Vielen lieben Dank für eure Hilfe! Es funktioniert. Das mit dem Alternativen-System war der entscheidende Hinweis. Echt klasse!

Gruß Elwedridsch

Antworten |