安装了ElasticSearch5.5.1后,每次启动服务的时候,都是启动了一下就自动停止了。查看了一下EventViewer, 错误信息如下:
Application: elasticsearch.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: Elastic.ProcessHosts.Process.StartupException at Elastic.ProcessHosts.Process.ProcessBase.HandleException(System.Exception) at System.Reactive.ObserverBase`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnError(System.Exception) at System.Reactive.Observer`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnError(System.Exception) at System.Reactive.Linq.ObservableImpl.AsObservable`1+_[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnError(System.Exception) at System.Reactive.AutoDetachObserver`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnErrorCore(System.Exception) at System.Reactive.ObserverBase`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnError(System.Exception) at Elastic.ProcessHosts.Process.ObservableProcess+<>c__DisplayClass22_0.<CreateProcessExitSubscription>b__0(System.Reactive.EventPattern`1<System.Object>) at System.Reactive.AnonymousSafeObserver`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].OnNext(System.__Canon) at System.EventHandler.Invoke(System.Object, System.EventArgs) at System.Diagnostics.Process.OnExited() at System.Diagnostics.Process.RaiseOnExited() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object, Boolean) |
看不出来什么。
用命令行定位到ElasticSearch的安装目录,在命令行运行elasticsearch.exe, 错误信息如下:
C:Program FilesElasticElasticsearchin>elasticsearch.exe java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearc h : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 2) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" |
看来是Java的版本不对。然后再在命令行运行elasticsearch.exe --debug-env, 结果如下:
C:Program FilesElasticElasticsearchin>elasticsearch.exe --debug-env ------------- Elasticsearch ------------- ES_HOME (in order of precedence) - HomeDirectoryProcessVariable = C:Program FilesElasticElasticsearch - HomeDirectoryUserVariable = - HomeDirectoryMachineVariable = C:Program FilesElasticElasticsearch - From executable location = C:Program FilesElasticElasticsearch ES_CONFIG (in order of precedence) - ConfigDirectoryProcessVariable = C:ProgramDataElasticElasticsearchconfig - ConfigDirectoryUserVariable = - ConfigDirectoryMachineVariable = C:ProgramDataElasticElasticsearchconfig - Fallback to ES_HOME = C:Program FilesElasticElasticsearchconfig
------------- Java ------------- Java paths - current = C:Program FilesJavajdk1.7.0_67injava.exe Java Candidates (in order of precedence) - JavaHomeProcessVariable = - JavaHomeUserVariable = - JavaHomeMachineVariable = - JdkRegistry64 = C:Program FilesJavajdk1.7.0_67 - JreRegistry64 = C:Program FilesJavajre1.8.0_144 - JdkRegistry32 = - JreRegistry32 = C:Program Files (x86)Javajre1.8.0_111 Java checks - Using32BitJava = False - JAVA_HOME as machine and user variable = False |
搜索了一下错误信息:
org/elasticsearch/bootstrap/Elasticsearc h : Unsupported major.minor |
上面说的是ElasticSearch5.0至少需要Java8。 于是安装了Java8 Update.
结果还是一样。难道需要重新安装ElasticSearch?
于是卸载重新安装。重新安装了还是不行。
仔细看了一下--debug-env的结果,发现jre虽然已经更新到了8,但是jdk还是7,那么就重新安装JDK8试试吧。
JDK8的下载地址在这里:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装后再运行--debug-env, 发现jdk和jre都是8了。
C:Program FilesElasticElasticsearchin>elasticsearch.exe --debug-env ------------- Elasticsearch ------------- ES_HOME (in order of precedence) - HomeDirectoryProcessVariable = C:Program FilesElasticElasticsearch - HomeDirectoryUserVariable = - HomeDirectoryMachineVariable = C:Program FilesElasticElasticsearch - From executable location = C:Program FilesElasticElasticsearch ES_CONFIG (in order of precedence) - ConfigDirectoryProcessVariable = C:ProgramDataElasticElasticsearchconfig - ConfigDirectoryUserVariable = - ConfigDirectoryMachineVariable = C:ProgramDataElasticElasticsearchconfig - Fallback to ES_HOME = C:Program FilesElasticElasticsearchconfig
------------- Java ------------- Java paths - current = C:Program FilesJavajdk1.8.0_144injava.exe Java Candidates (in order of precedence) - JavaHomeProcessVariable = - JavaHomeUserVariable = - JavaHomeMachineVariable = - JdkRegistry64 = C:Program FilesJavajdk1.8.0_144 - JreRegistry64 = C:Program FilesJavajre1.8.0_144 - JdkRegistry32 = - JreRegistry32 = C:Program Files (x86)Javajre1.8.0_111 Java checks - Using32BitJava = False - JAVA_HOME as machine and user variable = False |
再次启动ElasticSearch服务,成功了!不再自动停了。