仅在第二次编译时 Hibernate 搜索程序错误

Hibernate search program errors only on second compile

如果我将 运行 这个休眠搜索程序第一次正确运行,而如果我第二次编译它会产生错误:

   ERROR: HSEARCH000058: Exception occurred org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@D:\data\index\com.srccodes.example.hibernate.Contact\write.lock
    Primary Failure:
        Entity com.srccodes.example.hibernate.Contact  Id null  Work Type  org.hibernate.search.backend.PurgeAllLuceneWork

    org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@D:\data\index\com.srccodes.example.hibernate.Contact\write.lock
        at org.apache.lucene.store.Lock.obtain(Lock.java:84)
        at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1108)
        at org.hibernate.search.backend.impl.lucene.IndexWriterHolder.createNewIndexWriter(IndexWriterHolder.java:127)
        at org.hibernate.search.backend.impl.lucene.IndexWriterHolder.getIndexWriter(IndexWriterHolder.java:102)
        at org.hibernate.search.backend.impl.lucene.AbstractWorkspaceImpl.getIndexWriter(AbstractWorkspaceImpl.java:119)
        at org.hibernate.search.backend.impl.lucene.LuceneBackendQueueTask.applyUpdates(LuceneBackendQueueTask.java:99)
        at org.hibernate.search.backend.impl.lucene.LuceneBackendQueueTask.run(LuceneBackendQueueTask.java:67)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

如果您的 Hibernate Search 应用程序的第一个实例仍然是 运行(在任何操作系统上),您将收到此类错误。

此外,如果您 运行 Windows 如果您没有正确关闭第一个实例,您也可能会遇到此错误。

请记住,正确关闭任何 Hibernate 应用程序需要您调用 Hibernate SessionFactory 上的 "close()" 方法,或者如果您使用的是 JPA,则必须关闭 EntityManagerFactory.