首页 > 解决方案 > 无法在 Linux(SUSE) 上运行 ElasticSearch-7.5.0

问题描述

我正在尝试在我的服务器上运行 ES,但出现此错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/tools/java_version_checker/JavaVersionChecker : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

找不到主类:org.elasticsearch.tools.java_version_checker.JavaVersionChecker。程序将会退出。

好像是java版本的问题,请问是我做错了什么或者在运行ES之前需要进行特殊配置吗?

请注意,我们在服务器中安装了以下 JDK 版本:

标签: linuxelasticsearchsuse

解决方案


最新版本的 elasticsearch 与旧版本的 Java 不兼容,有关一般错误的更多详细信息,请Unsupported major.minor version 51.0参见此处

同样正如官方 ES 文档中所提到的,如果找不到兼容的 JVM 版本,ES 将不会启动。

如果使用已知错误的 Java 版本,Elasticsearch 将拒绝启动。使用您自己的 JVM 时,可能会删除捆绑的 JVM 目录。

并且可以在这个官方支持的矩阵链接中找到具有不同版本的 elasticsearch 的整个支持的 JVM 版本。

通过您的错误消息,很明显您使用的是 1.7 JDK 版本,该版本用作SO 答案51中提到的主要版本。如果您检查上述支持的矩阵,则在 ES 5.X 上或之后,不支持低于 JDK 1.8 的版本。

因此,您需要将您的 JDK 指向 1.8 版本,因为它已经安装在您的系统中但尚未使用,并且有大量关于如何执行此操作的文档,之后,您应该能够启动 ES。


推荐阅读