我正在尝试在我的aws应用程序上实现Hibernate搜索。像往常一样,一切都在本地主机上运行得很好,但当上传到aws时,我收到以下错误:
org.hibernate.search.SearchException: Unable to create index directory:
/usr/lucene/indexes for index com.myproject.domain.User
我的Hibernate搜索配置:
<prop key="hibernate.search.default.directory_provider">filesystem</prop>
<prop key="hibernate.search.default.indexBase">/usr/lucene/indexes</prop>
我正在使用EC2 + elastic beanstalk,linux和tomcat7,我在本地机器上安装了windows。
我应该在EC2上手动创建一个名为"/usr/lucene/indexes“的目录吗?谢谢。
发布于 2013-02-07 11:40:17
会不会是应用程序没有创建基目录的正确权限?也许最好的方法是创建基本目录,并赋予它正确的权限。AFAIK,Hibernate Search将尝试创建完整路径。如果这不是权限问题,那么查看完整的堆栈跟踪将会有所帮助。
发布于 2019-11-30 13:15:39
我也有类似的问题。原因是tomcat没有创建目录的权限。如果您查看beanstalk中的eb活动日志,就会创建目录,然后向tomcat授予权限。
++ /opt/elasticbeanstalk/bin/get-config container -k tomcat_version
+ TOMCAT_VERSION=8.5
+ '[' 8.5 == 8.5 ']'
+ TOMCAT_VERSION=8
+ TOMCAT_NAME=tomcat8
+ [[ -n true ]]
+ rm -rf /var/log/tomcat8
+ mkdir -p /var/log/tomcat8
+ chown -R tomcat:tomcat /var/log/tomcat8
+ /opt/elasticbeanstalk/bin/log-conf -ntomcat8 '-l/var/log/tomcat8/*'
因此您应该创建一个目录,例如var/myindex,并授予权限
sudo chown tomcat:tomcat /var/myindex
在您的代码中,将persistence.xml中的路径更改为这个新路径。
作为一种快捷方式,如果您尝试注释掉索引行,应用程序仍将尝试创建目录,但仍将失败。
发布于 2019-12-26 13:25:34
WINDOWS用户的
在服务器要创建所需目录的文件夹上授予write的权限。
在我的例子中,服务器想要在C:\Program Files\Java\jdk1.8.0_191
中创建一个文件夹,所以我给了这个文件夹write的权限。
附言:这可能是一个糟糕的解决方案,因为它是在JAVA_HOME
中编写的
https://stackoverflow.com/questions/14712951
复制相似问题