首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在6.2版本中启动弹性搜索时如何修复"java.lang.ArrayIndexOutOfBoundsException“异常

在6.2版本中启动弹性搜索时如何修复"java.lang.ArrayIndexOutOfBoundsException“异常
EN

Stack Overflow用户
提问于 2019-06-27 00:41:13
回答 1查看 2.2K关注 0票数 0

弹性搜索服务器不会在新节点上启动。如果出现以下错误,它将失败:

代码语言:javascript
复制
[2019-06-27T00:16:01,471][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-10] fatal error in thread [main], exiting
java.lang.ExceptionInInitializerError: null
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_212]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_212]
    at org.elasticsearch.painless.Definition.addStruct(Definition.java:753) ~[?:?]
    at org.elasticsearch.painless.Definition.<init>(Definition.java:566) ~[?:?]
    at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:106) ~[?:?]
    at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:59) ~[?:?]
    at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:69) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.node.Node.<init>(Node.java:327) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.2.jar:6.2.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.2.jar:6.2.2]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
    at java.time.chrono.JapaneseEra.<clinit>(JapaneseEra.java:179) ~[?:1.8.0_212]
    ... 19 more

我已经在GCP中运行了一个5节点的集群。由于负载增加,我尝试向该集群添加几个节点。为了创建新节点,我使用了GCP提供的“创建类似的”选项。我更新了所有配置,如节点名称,并删除了/var/lib/elasticsearch/nodes文件夹,并尝试在新节点上启动ES服务器。但是由于上面提到的错误,它总是失败的。

此节点使用OpenJDK 1.8。我为根记录器启用了跟踪日志,但无法识别新节点的问题所在。

请帮助找出这个问题的根本原因。

EN

回答 1

Stack Overflow用户

发布于 2019-12-17 13:57:11

理论解释:

公共类ArrayIndexOutOfBoundsException扩展IndexOutOfBoundsException

引发,以指示已使用非法索引访问数组。索引不是负的,就是大于或等于数组的大小。

如何避免:

  1. 请始终记住,数组是基于零的索引,第一个元素位于第0索引,最后一个元素位于长度-1索引。因此,访问第一个元素将在Java中给出java.lang.ArrayIndexOutOfBoundsException :0错误。

在您的例子中,它是由: java.lang.ArrayIndexOutOfBoundsException: 4引起的

在Java中遍历数组时,您应该始终支付一次性错误。程序员经常犯错误,导致在for循环中错误地使用the <,>,> >= or <= operator,导致数组的第一个或最后一个元素丢失,或者在最后一个元素之前完成。

  1. 特别注意循环的开始和结束条件。
  2. 在代码中放置一些if-否则块。

这里我已经复制了你的错误:

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56782549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档