2017-02-16 6 views
1

Ich weiß, dass der Fehler "Nicht unterstützte major.minor version 52.0" darauf hinweist, dass der Java-Code mit Java 8 kompiliert wurde und versucht wurde, ihn mit einer früheren Version auszuführen.Elasticsearch: Nicht unterstützt major.minor version 52.0

Ich weiß, dass es daher suggested ist, dass JAVA_HOME und PATH auf die richtige Java-Version zeigen.

Von allem, was ich sagen kann, ich habe mein System bereits auf die richtige Version zeigt:

[email protected] ~ $ java -version 
java version "1.8.0_102" 
Java(TM) SE Runtime Environment (build 1.8.0_102-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 
[email protected] ~ $ which java 
/home/me/bin/jdk1.8.0_102_64bit/bin/java 
[email protected] ~ $ echo $JAVA_HOME 
/home/me/bin/jdk1.8.0_102_64bit 

Allerdings habe ich immer noch die unten stehende Fehlermeldung erhalten, wenn Elasticsearch auszuführen versuche (installiert via apt-get):

[email protected] ~ $ sudo -i service elasticsearch start 
* Starting Elasticsearch Server 
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearch : Unsupported major.minor version 52.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
... 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 

Edit:

Die PATH-Variable (in constrast zu anderen Variablen wie JAVA_HOME) zurückgesetzt mit sudo auf Ubuntu basierende Linux-Versionen, ein suggested solution ist die Variable erneut eingestellt sudo env mit:

[email protected] ~ $ sudo echo $JAVA_HOME 
/home/me/bin/jdk1.8.0_102_64bit 
[email protected] ~ $ sudo java -version 
java version "1.7.0_121" 
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-1ubuntu0.14.04.1) 
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode) 
[email protected] ~ $ sudo env PATH=$PATH java -version 
java version "1.8.0_102" 
Java(TM) SE Runtime Environment (build 1.8.0_102-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 

Dies ist jedoch nicht für mein eigentliches Problem (ab Elasticsearch) funktioniert:

[email protected] ~ $ sudo env PATH=$PATH service elasticsearch start 
* Starting Elasticsearch Server 
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearch : Unsupported major.minor version 52.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
... 
+0

Das Ausführen von sudo kann eine andere Java-Version darstellen, als Sie erwarten würden. Könnten Sie beispielsweise die Java-Version innerhalb des Skripts ausdrucken und dann von dort aus nehmen? Könnte es sein, dass das Skript selbst eine andere Java-Version definiert? Oder eine andere Eigenschaft? Ich würde nur eine 'Java-Version machen; welches Java innerhalb des Skripts selbst ('/ etc/init.d/elasticsearch') :-) – vegaasen

+1

Ich bin nicht vertraut mit Linux, aber vielleicht läuft der 'sudo'-Befehl mit einem anderen Benutzer, der einen anderen Pfad (oder Java-Installation) hat ? Ist es möglich, einen Befehl wie 'sudo java -version' auszuführen, um das herauszufinden? – Seelenvirtuose

+0

meine Frage aktualisiert - ein Workaround funktioniert für 'sudo java -version', aber nicht für mein eigentliches Problem. – benroth

Antwort

0

+1

mit gleicher Ausgabe auf Debian Jessie

Händler-ID: Debian Beschreibung: Debian GNU/Lin ux 8.6 (jessie) Release: 8.6 Codename: jessie

Verwandte Themen