Elasticsearch2.4版本,在Linux机器上启动报如下错误:
Exception in thread "main" java.lang.RuntimeException: Java version: Oracle Corporation 1.7.0_45 [OpenJDK 64-Bit Server VM 24.45-b08] suffers from critical bug https://bugs.openjdk.java.net/browse/JDK-8024830 which can cause data corruption.
Please upgrade the JVM, see http://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html for current recommendations.
If you absolutely cannot upgrade, please add -XX:-UseSuperWord to the JAVA_OPTS environment variable.
Upgrading is preferred, this workaround will result in degraded performance.
at org.elasticsearch.bootstrap.JVMCheck.check(JVMCheck.java:123)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:284)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:45)
Refer to the log for complete error details.
看网上有说Linux自带的OpenJDK和新装的JDK可能会有冲突(跟Elasticsearch无关的文章),不知道和这个有没有没关系。
我的机器java -version如下,这算冲突吗?我也不清楚。
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
本来打算试一试删掉OpenJDK安装JDK7的,当时上官网下载Linux版JDK7时发现竟然要下载三个多小时,下载这个不知道为什么这么慢。
等JDK7时,我看报错信息里please add -XX:-UseSuperWord to the JAVA_OPTS environment variable让我配置环境变量,那我配一下也无妨。
在终端上输入
export JAVA_OPTS=$JAVA_OPTS-XX:-UseSuperWord
然后启动Elasticsearch,成了。
上边那句只在当前用户下生效,关闭终端或者退出用户后,即使再次登录,环境变量也失效了。机器不是我的,我没有root权限改环境变量。
一不做二不休,我在Elasticsearch的启动文件/bin/elasticsearch里加上这行,这样每次启动就没问题了。
截图如下