Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “在EC2上休眠搜索”;无法创建索引目录";_Java_Amazon Web Services_Amazon Ec2_Hibernate Search - Fatal编程技术网

Java “在EC2上休眠搜索”;无法创建索引目录";

Java “在EC2上休眠搜索”;无法创建索引目录";,java,amazon-web-services,amazon-ec2,hibernate-search,Java,Amazon Web Services,Amazon Ec2,Hibernate Search,我正在尝试在aws应用程序上实现Hibernate搜索。与往常一样,在localhost上一切都很好,但当上传到aws时,我收到以下错误: org.hibernate.search.SearchException: Unable to create index directory: /usr/lucene/indexes for index com.myproject.domain.User 我的Hibernate搜索配置: <prop key="hibernate.search.de

我正在尝试在aws应用程序上实现Hibernate搜索。与往常一样,在localhost上一切都很好,但当上传到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>
文件系统
/usr/lucene/indexes
我正在使用EC2+elastic beanstalk、linux和Tomcat7。 我在本地计算机上有windows


我应该在EC2上手动创建一个名为“/usr/lucene/index”的目录吗?谢谢。

可能是应用程序没有创建基本目录的正确权限吗?也许最好创建基本目录并赋予它正确的权限。好的,Hibernate搜索将尝试创建完整路径。如果不是权限问题,那么查看完整的stacktrace会有所帮助。

我也有类似的问题。原因是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中的路径更改为新路径


作为一种快捷方式,如果您尝试注释掉索引行,应用程序仍将尝试创建目录,并且仍将失败。

对于WINDOWS用户

对服务器要在其中创建所需目录的文件夹授予写入权限

在我的例子中,服务器希望在
C:\ProgramFiles\Java\jdk1.8.0\u 191中创建一个文件夹
因此,我授予了写入此文件夹的权限


注意:这可能是一个糟糕的解决方案,因为它写在
JAVA_HOME

我不确定,但Beanstalk不会在后台创建多个EC2实例。如果是这种情况,您将在哪个实例上创建目录,以及如何在不同机器上的文件系统之间同步没有Beanstalk不会创建多个EC2实例实例。它只创建一个。如果尝试手动停止,它将自动重新启动,并且似乎正在创建多个实例