2013-02-18 75 views
2

我已經編寫了一個程序,它使用Lucene爲刮板文本匹配地址。當它建成並通過命令行運行時已經編譯和運行,但一切都運行在NetBeans很好,我收到以下內容:在運行時使用Lucene的NoClassDefFoundError IndexableField

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/index/IndexableField 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 

我發現,該類IndexableField.class是不是在任何廣口瓶所以我不知道爲什麼它首先能夠正常工作,更不用說爲什麼它在終端上生成並運行後無法使用。

+0

你有隱藏在某處的任何與lucene相關的jar嗎?在IDE中運行Java應用程序(如NetBeans或Eclipse)很簡單cuz ** Classpath **由IDE自動計算出來。所以基本上你需要做兩件事。 1.搜索諸如** lucene之類的jar - *。jar **; 2.當通過命令行運行應用程序時,需要先設置類路徑** javac -cp ** – spiritwalker 2013-02-18 02:24:34

+0

命令行可能與NetBeans有不同的類路徑,IndexableField.class應該位於Lucene-core.jar中。 – Joe 2013-02-18 02:25:11

+0

乾杯傢伙。 IndexableField出於某種原因不在覈心jar中。已經下載了預編譯版本(我從源碼開始構建),現在工作正常。 – 2013-02-18 03:28:29

回答

0

我遇到了這個問題。根據Lucene文檔,我將4個Jars添加到classpath中並解決了問題。 以下是文檔。

「設置CLASSPATH中

首先,你應該下載最新的Lucene的分佈,然後將其解壓縮到一個工作目錄

需要四個JAR文件:Lucene的JAR時,QueryParser的JAR,共同分析JAR和Lucene演示JAR,你應該在你提取歸檔時創建的核心/目錄中看到Lucene JAR文件 - 它應該被命名爲lucene-core- {version} .jar,你也應該看到文件分別在queryparser,analysis/common /和demo /下分別稱爲lucene-queryparser- {version} .jar,lucene-analyers-common- {version} .jar和lucene-demo- {version} .jar。

將這四個文件放到Java CLASSPATH中。「

相關問題