java - 使用 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
解决方案
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
推荐阅读
- sql - SQL 在应该拉取值时拉取 null
- discord.js - discord.js 为用户添加角色
- spring - 使用 Webflux 的反应式 Feign
- python - Django中多个依赖用户的数据过滤问题
- c# - 从解决方案和 Visual Studio 的磁盘中查找并删除未使用的文件和文件夹
- serialization - 从对象大小计算文件中的行不起作用
- reactjs - 在 Gatsby 中使用 React Leaflet 围绕 GeoJson 对象的边界框
- node.js - Discord.js V12 TypeError:无法读取未定义的属性“发送”
- python - 将图像转换为灰度返回了一个奇怪的图像
- pandas - 数据框中的值介于第二个数据框中的值之间