Linux 无法加载JNA本机支持库Elasticsearch 6.x
我已经在我的Linux 无法加载JNA本机支持库Elasticsearch 6.x,linux,elasticsearch,jna,mount,umask,Linux,elasticsearch,Jna,Mount,Umask,我已经在我的Debian 7(wheezy)中安装了Elasticsearch 6.x。我试图从服务弹性搜索开始开始,但它给了我一条错误消息 root@debian:~# sudo -i service elasticsearch start [FAIL] Starting Elasticsearch Server: failed! 我试图查看位于nano/var/log/elasticsearch/elasticsearch.log的elasticsearch日志文件,但发现了这个错误 [2
Debian 7(wheezy)
中安装了Elasticsearch 6.x。我试图从服务弹性搜索开始
开始,但它给了我一条错误消息
root@debian:~# sudo -i service elasticsearch start
[FAIL] Starting Elasticsearch Server: failed!
我试图查看位于nano/var/log/elasticsearch/elasticsearch.log
的elasticsearch日志文件,但发现了这个错误
[2017-12-14T11:25:39,153][WARN ][o.e.b.Natives ] unable to load JNA native support library, native methods will be disabled.
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-x86/libjnidispatch.so) not found in resource path ([file:/usr/share/elasticsearch/lib/lucene-spatial-$
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:962) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.sun.jna.Native.<clinit>(Native.java:190) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_151]
at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_151]
at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.java:45) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) [elasticsearch-6.1.0.jar:6.1.0]
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot check if running as root because JNA is not available
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot install system call filter because JNA is not available
[2017-12-14T11:25:39,215][WARN ][o.e.b.Natives ] cannot register console handler because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_NPROC because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_AS beacuse JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_FSIZE because JNA is not available
[2017-12-14T11:25:39153][WARN][o.e.b.Natives]无法加载JNA本机支持库,本机方法将被禁用。
java.lang.UnsatifiedLinkError:在资源路径([file:/usr/share/elasticsearch/lib/lucene spatial]中未找到本机库(com/sun/jna/linux-x86/libjnidispatch.so)-$
在com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:962)~[jna-4.4.0-1.jar:4.4.0(b0)]
在com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922)~[jna-4.4.0-1.jar:4.4.0(b0)]
在com.sun.jna.Native.(Native.java:190)~[jna-4.4.0-1.jar:4.4.0(b0)]
在java.lang.Class.forName0(本机方法)~[?:1.8.0_151]
在java.lang.Class.forName(Class.java:264)~[?:1.8.0_151]
在org.elasticsearch.bootstrap.Natives.(Natives.java:45)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.bootstrap.initializations(bootstrap.java:103)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.bootstrap.setup(bootstrap.java:171)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.bootstrap.init(bootstrap.java:322)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.elasticsearch.init(elasticsearch.java:121)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.elasticsearch.execute(elasticsearch.java:112)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.cli.environmentawerecommand.execute(environmentawerecommand.java:86)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.cli.Command.main不带错误处理(Command.java:124)[elasticsearch-cli-6.1.0.jar:6.1.0]
在org.elasticsearch.cli.Command.main(Command.java:90)[elasticsearch-cli-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:92)[elasticsearch-6.1.0.jar:6.1.0]
在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:85)[elasticsearch-6.1.0.jar:6.1.0]
[2017-12-14T11:25:39212][WARN][o.e.b.Natives]无法检查是否以root身份运行,因为JNA不可用
[2017-12-14T11:25:39212][WARN][o.e.b.Natives]无法安装系统调用筛选器,因为JNA不可用
[2017-12-14T11:25:39215][WARN][o.e.b.Natives]无法注册控制台处理程序,因为JNA不可用
[2017-12-14T11:25:39256][WARN][o.e.b.Natives]无法获取RLIMIT\u NPROC,因为JNA不可用
[2017-12-14T11:25:39256][WARN][o.e.b.本地人]无法获取RLIMIT-RLIMIT_,因为JNA不可用
[2017-12-14T11:25:39256][WARN][o.e.b.Natives]无法获取权限,因为JNA不可用
我如何修复这个问题?我已经安装了java,它的版本是JavaC1.8.0_151
我的代码会出什么问题?
`检查您的
/tmp/
目录上的权限。它必须具有noexec
/tmp
需要exec
来支持JNA。解决方法是在elasticsearch sysconfig文件中指定tmp
目录
类似于导出JAVA_OPTS=“-Djava.io.tmpdir=$ES_HOME/tmp”
确保存在$ES_HOME/tmp
目录,并且elasticsearch
用户对其具有写入权限
我在使用加固的操作系统时遇到了这个问题,同时也是因为默认的umask是
0027
在Windows 10上从命令提示符下运行时也遇到了同样的问题:
unable to load JNA native support library, native methods will be disabled.
要解决这个问题,只需运行具有管理员权限的elasticsearch.exe(单击开始->键入“命令”->右键单击“命令提示符”->选择“以管理员身份运行”)好的,我找到了解决方案。显然,我的vm内存存储(RAM)是1GB-2GB,所以我将虚拟机的RAM容量增加到至少4GB,然后重新启动机器。弹性搜索开始正常工作
/etc/sysconfig/elasticsearch
ES\u JAVA\u OPTS=“-Djna.tmpdir=/var/lib/elasticsearch/tmp”
(对于较新的Elasticsearch,请使用Djava.io.tmpdir
而不是Djna.tmpdir
)systemctl Start Elasticsearch
或服务启动Elasticsearch
启动Elasticsearch/var/lib/elasticsearch/
中创建的tmp
文件夹elasticsearch
用户的执行权限i-l/var/lib/elasticsearch检查权限
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root lib
drwxr-x--- elasticsearch elasticsearch elasticsearch
我希望您的问题能够得到解决。我在CentOS7 cPanel服务器上遇到了相同的问题,该服务器通过YUM安装了ElasticSearch 7.8。 根据报告,我做了以下工作:
/etc/sysconfig/elasticsearch
mkdir-p/var/lib/elasticsearch/tmp
chown-R elasticsearch.elasticsearch/var/lib/elasticsearch/tmp
PUT your_index_name/_settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
我点击了以下链接:
在Ubuntu 18.04上,解决方案是 sudo systemctl edit--完整的elasticsearch.service 添加一行 Environment=ES_JAVA_OPTS=“-Djava.io.tmpdir=/var/lib/elasticsearch/tmp” 与vi中的-x一起退出 重新启动服务 sudo systemctl重新启动elasticsearch.service
似乎我找不到这个/etc/sysconfig/elasticsearch,我只看到/etcWindows或linux machine?将/etc/elasticsearch/jvm.options中的jvm堆大小更改为-Xms2g