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)
...
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
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
meine Frage aktualisiert - ein Workaround funktioniert für 'sudo java -version', aber nicht für mein eigentliches Problem. – benroth