我正在使用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,也会发生这种情况
任何建议,将不胜感激。
如果您仍然遇到此问题......或仅仅是为了好奇......请查看文件./bin/elasticsearch-env.sh,在第70行附近,查找命令:
"$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上。
我也遇到了这样一个奇怪的问题,第一次以root身份运行弹性引发异常,在我添加一个新用户弹性并将其作为弹性运行后,我看到这个异常“无法找到或加载主类org.elasticsearch.tools。 launchers.JavaVersionChecker“。
我通过将程序目录移动到非/ root / dirs解决了这个问题,例如,我将它放到/ opt / elk /,它可以工作。
所以我认为弹性可能不允许以root身份运行以保证安全性,因此我们无法将程序放在root用户的目录中。希望它可以为你提供一些技巧。
好像你没有正确的权限。尝试将它们设置为774(rwxrwxr--)并再次检查:
sudo chmod 774 -R elasticsearch-6.3.2/