2015-12-22 20 views
2

編輯:此問題已解決。出於某種原因,Eclipse的plugins目錄中確實存在另一個版本的Lucene文件。Eclipse插件中的Lucene NoSuchMethodError

我想在Eclipse插件中使用Lucene。它的方法應該從另一個插件調用。

只要將項目作爲Java應用程序運行,它就會很好地工作。但是,當我嘗試調用來自其他插件的方法,我得到以下錯誤:

java.lang.NoSuchMethodError: org.apache.lucene.store.FSDirectory.open(Ljava/nio/file/Path;)Lorg/apache/lucene/store/FSDirectory; 

當然的方法確實存在,因爲它運行的Java應用程序完全正常。因此,我想我必須做一些特定的插件來使其工作。

我添加了必要的Lucene-jars(lucene-analyers-common-5.3.1和lucene-core-5.3.1)到我的插件的依賴關係。我還將org.apache.lucene.store添加到我的插件的導出包(如Eclipse所建議的那樣,調用方法的插件可以捕獲LockObtainFailedException)。這就是我對Lucene所做的一切。

有人可以告訴我我忘了/不知道什麼嗎? (如果它不是很明顯,我完全是Eclipse插件的新手)

編輯: 我也嘗試添加罐直接到調用Lucene方法的插件(通過添加到Bundle-ClassPath的路徑在清單中)。沒有改變任何東西。

我也讀過這樣的問題,可能會出現由於另一個版本的Lucene在我的類路徑中的某處。我確信情況並非如此。

+0

檢查jar是否已完全下載 –

+0

@AbdullahAlNoman如問題所述,將項目作爲Java應用程序(而不是Eclipse應用程序)運行時沒有問題,所以我懷疑這可能是問題所在。 –

+0

你把這些罐子放在哪裏? Eclipse插件使用的所有內容都必須位於插件中,只是在Classpath中引用Jar將無法正常工作。 Eclipse確實帶有一些舊的Lucene插件,你可能會引用這些插件。向我們展示包含Lucene jar的插件的MANIFEST.MF和build.properties。 –

回答

1

由於某些原因,Eclipse的plugins目錄中確實存在另一個(較舊的)版本的Lucene文件。這是問題所在。我刪除了它們並刪除了清單中的版本標記。