首页 > 解决方案 > 使用 Java 11 启动弹性搜索 5.0.1 时出现 AccessControlException

问题描述

使用 Java 11 将索引从弹性搜索 5.0.1 存储到 NFS 分区时出现异常。

来自弹性搜索日志的 Stacktrace:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/globalSearchElkData/nodes/0" "write")
        at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[?:?]
        at java.base/java.security.AccessController.checkPermission(AccessController.java:895) ~[?:?]
        at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322) ~[?:?]
        at java.base/java.lang.SecurityManager.checkWrite(SecurityManager.java:752) ~[?:?]
        at java.base/sun.nio.fs.UnixPath.checkWrite(UnixPath.java:824) ~[?:?]
        at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:377) ~[?:?]
        at java.base/java.nio.file.Files.createDirectory(Files.java:689) ~[?:?]
        at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:796) ~[?:?]
        at java.base/java.nio.file.Files.createDirectories(Files.java:742) ~[?:?]
        at org.apache.lucene.store.NativeFSLockFactory.obtainFSLock(NativeFSLockFactory.java:92) ~[lucene-core-6.2.1.jar:6.2.1 43ab70147eb494324a1410f7a9f16a896a59bc6f - shalin - 2016-09-15 05:15:20]
        at org.apache.lucene.store.FSLockFactory.obtainLock(FSLockFactory.java:41) ~[lucene-core-6.2.1.jar:6.2.1 43ab70147eb494324a1410f7a9f16a896a59bc6f - shalin - 2016-09-15 05:15:20]
        at org.apache.lucene.store.BaseDirectory.obtainLock(BaseDirectory.java:45) ~[lucene-core-6.2.1.jar:6.2.1 43ab70147eb494324a1410f7a9f16a896a59bc6f - shalin - 2016-09-15 05:15:20]
        at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:225) ~[elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.node.Node.<init>(Node.java:240) ~[elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.node.Node.<init>(Node.java:220) ~[elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:191) ~[elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:191) ~[elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:112) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:103) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:96) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.cli.Command.main(Command.java:62) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) [elasticsearch-5.0.1.jar:5.0.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:73) [elasticsearch-5.0.1.jar:5.0.1]
[2018-12-28T10:50:38,107][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]

注意:相同的设置适用于 Java8

标签: javaelasticsearchelastic-stackelasticsearch-5java-11

解决方案


To answer the question about the Java version:

The discussion in this thread is saying that version 6.x will have Java 11 support.

Here is an overview of the current supported Java versions. Java 11 is supported in version 6.5.x.

BUT the exception is more likly caused by the elasic process does not have the write permission on the filesystem folder in the exception message:

access denied ("java.io.FilePermission" "/globalSearchElkData/nodes/0" "write")

Please check the permissions of the folder /globalSearchElkData/nodes/0


推荐阅读