今天在使用 elasticsearch 的中文分词时,遇到了 access denied 问题。抛出的异常大概是 java.io.FilePermission,即权限问题。整个异常信息如下:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'blogController': Unsatisfied dependency expressed through field 'esBlogService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'esBlogServiceImpl': Unsatisfied dependency expressed through field 'esBlogRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'esBlogRepository': Invocation of init method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository]: Constructor threw exception; nested exception is java.lang.SecurityException: access denied ("java.io.FilePermission" "D:\Program%20Files\elasticsearch-6.2.4\plugins\analysis-ik\config\IKAnalyzer.cfg.xml" "read")
从异常提示信息上看是权限问题,就是说 IKAnalyzer.cfg.xml 这个文件,java 程序只有读取权限,而对于 IKAnalyzer.cfg.xml 文件,elasticsearch 程序代码可能还需求其他一些权限,所以不能只有读权限。
然后我对 IKAnalyzer.cfg.xml 文件设置了非只读属性后,发现马上又变成了只读属性。最终原因是因为 D:\Program Files文件夹下的都是默认的只读权限。我把 elasticsearch-6.2.4 直接放在 D 盘然后重启 elasticsearch 后,程序就不在出这个错误了。
另外目录 不要有空格。
注意:
es 不要安装在 Program Files 、Program Files (x86) 这些目录下。