解決Elasticsearch因jdk版本問題啟動失敗的問題
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裡加上這行,這樣每次啟動就沒問題瞭。
截圖如下
解決ElasticSearch找不到JDK問題
Could not find any executable java binary.Please install java in your PATH
背景:
本地啟動ElasticSearch服務提示找不到JDK或JRE,提示Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME.
但是本地已經安裝瞭jdk,並且已經配置瞭環境變量,但是為什麼還是有問題,答案是不要把環境變量設置到bin目錄。
解決方案:
設置環境變量JAVA_HOME,但是註意不要設置到\bin這個級別的目錄
- JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_91\bin (錯誤)
- JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_91 (正確)
原因:
啟動文件中的elasticsearch文件中,會自動去找JAVA_HOME這個變量下的bin,如下圖,如果設置瞭JAVA_HOME這個變量到bin路徑,就會有重復,導致ElasticSearch啟動找不到jdk變量。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- CentOS系統下安裝及配置JDK介紹
- centos 安裝java環境的多種方法
- Win10下jdk安裝及環境變量配置詳細教程
- 解決Jenkins集成SonarQube遇到的報錯問題
- 關於java中多個JDK和切換版本介紹