,我只能猜測是classpath中小學生的錯誤,而試圖執行以下命令(象夫和Lucene是來自Apache的):由不正確的類路徑導致的java.lang.NoSuchMethodException?
bin/mahout seq2sparse -i <input-dir> -o <output-dir> -wt tfidf -chunk 50 \
-a org.apache.lucene.analysis.standard.StandardAnalyzer --minSupport 2\
--minDF 2 --maxDFPercent 75 --norm 2
這給我的錯誤:
Exception in thread "main" java.lang.IllegalStateException: java.lang.NoSuchMethodException: org.apache.lucene.analysis.standard.StandardAnalyzer.<init>()
at org.apache.mahout.common.ClassUtils.instantiateAs(ClassUtils.java:68)
at org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles.run(SparseVectorsFromSequenceFiles.java:204)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles.main(SparseVectorsFromSequenceFiles.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
Caused by: java.lang.NoSuchMethodException: org.apache.lucene.analysis.standard.StandardAnalyzer.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at org.apache.mahout.common.ClassUtils.instantiateAs(ClassUtils.java:62)
... 16 more
預期的方法是Apache Lucene庫的一部分,它不是我自己的代碼。 export CLASSPATH=$CLASSPATH:mahout-distribution-0.6/lib/*
作爲一個側面說明,在指定的「-a」標誌的類時,有沒有自動完成: 我一直在使用下面添加了Lucene jar添加到類路徑中。這是我的罐子不可見的跡象嗎?我在另一個系統上進行了自動補全。
我的機器上運行Java(TM)SE運行時環境(建立1.6.0_26-B03)
我想通過修改你的main函數開始,只需做一個'的System.out.println(「CLASSPATH =」 + System.getProperty(「java的開始.class.path「);'並檢查打印的類路徑以確保它包含您期望的罐子。 – Alderath 2012-03-30 15:38:30