"サポートされていないmajor.minorバージョン52.0"というエラーは、javaコードがJava 8でコンパイルされていて以前のバージョンで実行しようとしたことを示しています。Elasticsearch:サポートされていないmajor.minorバージョン52.0
私はそれがsuggested JAVA_HOMEとPATHがJavaの正しいバージョンを指していることを知っています。 (apt-getを介してインストール)elasticsearchを実行しようとしたとき
[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
しかし、私はまだ、以下のエラーを取得:
私はすでに正しいバージョンに私のシステムを指している伝えることができることすべてから
[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)
編集:
(JAVA_HOMEなどの他の変数にconstrast中)PATH変数がリセットされますUbuntuのベースlinuxesに、sudoで、1 suggested solutionはsudo env
を使用して再度変数を設定することです:
[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)
しかし、これは私の実際の問題(Elasticsearchを開始)には機能しません:
[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)
...
sudoを実行すると、期待していたものとは異なるJavaバージョンになることがあります。たとえば、スクリプト内でJavaバージョンを印刷してそこから取得できますか?スクリプト自体が別のJavaバージョンを定義している可能性がありますか?または他のいくつかのプロパティですか?私は 'java -version; ( '/ etc/init.d/elasticsearch') – vegaasen
私はLinuxに精通していませんが、' sudo'コマンドは別のパス(またはJavaインストール)を持つ別のユーザで実行されるかもしれません。 ?それを見つけるために 'sudo java -version'のようなコマンドを実行することは可能ですか? – Seelenvirtuose
私の質問が更新されました。回避策は 'sudo java -version'では有効ですが、実際の問題ではありません。 – benroth