2011-10-25 85 views
1

我下載了lucene jar,然後通過我的.bash_profile將它們添加到CLASSPATH變量中,jar的路徑在終端中正確顯示。在mac上爲lucene設置java classpath

export CLASSPATH=/Users/dk/lucene-3.4.0/lucene-core-3.4.0.jar 
export CLASSPATH=$CLASSPATH:/Users/dk/lucene-3.4.0/contrib/demo/lucene-demo-3.4.0.jar 

echo $CLASSPATH 
/Users/dk/lucene-3.4.0/lucene-core-3.4.0.jar:/Users/dk/lucene-3.4.0/contrib/demo/lucene-demo-3.4.0.jar 

然而,Java仍然向我抱怨,當我嘗試運行演示:

java org.apache.lucene.demo.IndexFiles -docs . 

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/demo/IndexFiles 
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.demo.IndexFiles 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
...... 

我能夠遵循這一確切的過程得到了Lucene演示一個Ubuntu的機器上工作,現在我只是希望它能夠在我的Mac上運行。似乎有類似的問題浮動在計算器周圍,但他們似乎都沒有回答這個問題。

回答

0

你確定你有你的路吧?這對我來說可以。

.../lucene-3.4.0/tmp $ ls 
lucene-core-3.4.0.jar lucene-demo-3.4.0.jar 
.../lucene-3.4.0/tmp $ export CLASSPATH=./lucene-core-3.4.0.jar:./lucene-demo-3.4.0.jar 
.../lucene-3.4.0/tmp $ echo $CLASSPATH 
./lucene-core-3.4.0.jar:./lucene-demo-3.4.0.jar 
.../lucene-3.4.0/tmp $ java org.apache.lucene.demo.IndexFiles -docs . 
Indexing to directory 'index'... 
adding ./lucene-core-3.4.0.jar 
adding ./lucene-demo-3.4.0.jar 
1485 total milliseconds 
.../lucene-3.4.0/tmp $ 
+0

你是正確的,我錯誤地留出了通道的一部分!愚蠢的問題,但是是否有可能獲得類路徑中jar包的tab完成?到目前爲止,我必須輸入課程的全名,這很煩人。 –

+0

@Damonkashu是的,類路徑可能會很痛苦。順便說一句,我通常建議不要使用環境類路徑 - 最好是在shell腳本中進行設置。我知道你*可以*在bash中實現類名完成(搜索「bash-completion」),但我不知道如何。 Zsh默認使用它,這非常酷。 –

0

由於Lucene的6.0,這似乎工作:

java -cp ./core/lucene-core-6.0.0.jar:./analysis/common/lucene-analyzers-common-6.0.0.jar:./demo/lucene-demo-6.0.0.jar org.apache.lucene.demo.IndexFiles -docs <directory to index> 

對於搜索演示:

java -cp ./core/lucene-core-6.0.0.jar:./analysis/common/lucene-analyzers-common-6.0.0.jar:./queryparser/lucene-queryparser-6.0.0.jar:./demo/lucene-demo-6.0.0.jar org.apache.lucene.demo.SearchFiles