linux - 无法在 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 版本:
- jdk1.7.0_25_32bit
- jdk1.7.0_25_64bit
- jdk1.7.0_72_32bit
- jdk1.7.0_72_64bit
- jdk1.8.0_74_64bit
解决方案
最新版本的 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。
推荐阅读
- python-3.x - 带有范围过滤器的 Elasticsearch Geo Polygon 查询
- regex - 使用 sed 在已知字符串和未知字符串之间添加点
- amazon-web-services - AWS ECS - What factors should I consider when creating a new cluster or re-using an existing cluster and creating a new service
- version-control - 有没有办法用它们的内容(包括历史)展平/替换 mercurial subrepos
- java - java.lang.IllegalArgumentException:比较方法违反了它的一般约定,仅在特定的测试用例中
- python - 如何在 Alembic 迁移(Postgres)中使用现有的 sqlalchemy 枚举
- python-3.x - 从字典中的值创建一个新列表
- javascript - How to target non-unique, dynamically generated elements in the DOM with plain javascript?
- c++ - 为什么是 static_cast
无法将变量转换为 int - php - 如何在返回语句中获取“for or foreach”循环值作为回显语句获取