Elasticsearch:无法找到或加载主类org.elasticsearch.tools.launchers.JavaVersionChecker

时间:2018-02-15 23:41:12

标签: java elasticsearch centos

我正在使用CentOS并已下载Elasticsearch 6.2.1。我创建了一个新用户“弹性”,当我运行./bin/elasticsearch时,我收到错误:

Could not find or load main class org.elasticsearch.tools.launchers.JavaVersionChecker

我尝试将此用户置于管理员组(“wheel”)中,并出现同样的问题。如果我尝试使用“sudo ./bin/elasticsearch”,我会得到:

[2018-02-15T17:42:39,776][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.1.jar:6.2.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.1.jar:6.2.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.1.jar:6.2.1]

我搜索了一下,看到这个错误可能是由于java版本,但它似乎是最新的:

[elastic@sandbox-hdp elasticsearch-6.1.1]$ sudo update-alternatives --config java

There are 3 programs which provide 'java'.

Selection Command
1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
*+ 2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
3 /usr/lib/jvm/jre-1.5.0-gcj/bin/java

如果我尝试Elasticsearch 6.1

,也会发生这种情况

任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:3)

如果您仍然遇到此问题......或仅仅是为了好奇......请查看第70行的 ./ bin / elasticsearch-env.sh 文件,查找命令:

"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JavaVersionChecker

检查它是否正确"拼写"对于你的环境,在它之前写下这个命令,看看你得到了什么:

echo "$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JavaVersionChecker 

在我的情况下......我在Windows机器内的Git Bash中运行,命令指向:

/c/Users/Ualter/Developer/ELKStack/elasticsearch-6.2.2/lib/*

更改为:

/Users/Ualter/Developer/ELKStack/elasticsearch-6.2.2/lib/* 

当我在Windows S.O.上运行时它启动并运行好Elasticsearch。

答案 1 :(得分:0)

我也遇到这样一个奇怪的问题,它第一次引发以root身份运行Elastic的异常,在我添加了一个新的用户Elastic并以elastic身份运行后,我看到此异常“找不到或加载主类org.elasticsearch .tools.launchers.JavaVersionChecker “

我通过将程序目录移动到非/ root /目录来解决了这个问题,例如,我将其放在/ opt / elk /中,并且可以正常工作。

因此,我想为了安全起见,elastic可能不允许以root用户身份运行,因此我们不能将程序放在root用户的dir中。希望它能为您提供一些提示。

答案 2 :(得分:0)

我正在努力在Windows上使用elasticsearch 6.7.1。

我在运行bin / elasticsearch.bat时遇到了这个确切的错误。

长话短说,我的Java版本和弹性搜索可能存在问题,它无法运行jar(使用Java 8 211)。

我从这里安装了最后一个ElasticSearch 6.x:

https://www.elastic.co/downloads/past-releases#elasticsearch

并取消设置我创建的现有ES_HOME和ES_CLASSPATH环境变量,一切顺利。

答案 3 :(得分:-2)

似乎您没有正确的权限。尝试将它们设置为774(rwxrwxr--),然后再次检查:

sudo chmod 774 -R elasticsearch-6.3.2/