我开发了一个分析器插件。插件使用的是C语言so库文件,但是当我调用插件分词时,本地库链接失败。
Caused by:
java.lang.UnsatisfiedLinkError:
com.***.JNIWrapper.seg_segment(Ljava/lang/String;IZZLjava/lang/String;)Ljava/lang/String;
Caused by:
org.elasticsearch.ElasticsearchException: failed to analyze;
我在插件的plugin-security.policy 文件中尝试了以下操作:
grant codeBase
"/opt/elasticsearch/elasticsearch-7.1.0/plugins/analysis-plugin/plugin.jar"
{
permission java.security.AllPermission;
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getProtectionDomain";
permission java.lang.RuntimePermission "getClassLoader";
permission java.io.FilePermission
"/opt/elasticsearch/elasticsearch-7.1.0/plugins/analysis-
plugin/Linux-amd64-64/lib.so", "read";
};
但这行不通。
我通过“AccessController.doPrivileged”解决了我的问题,谢谢你们。