2014-07-17 43 views
0

i 我使用Apache Lucene 4.9和NetBeans 7.2作爲桌面應用程序。 我創建了一個標準分析器,因此想使用分析器 來創建IndexWriterConfig。但他InexWriterConfig給出了一個沒有發現錯誤的類Apache Lucene 4.9.0類未找到錯誤

這是代碼片段。

// create some index 
       StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9); 
       System.out.println("index writer to be created1"); 
       IndexWriterConfig IWConfig = new IndexWriterConfig(Version.LUCENE_4_9,analyzer); 

這是由IDE

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/lucene/codecs/sep/IntStreamFactory 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404) 
    at java.lang.Class.getConstructor0(Class.java:2714) 
    at java.lang.Class.newInstance0(Class.java:343) 
    at java.lang.Class.newInstance(Class.java:325) 
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:67) 
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:47) 
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:37) 
    at org.apache.lucene.codecs.PostingsFormat.<clinit>(PostingsFormat.java:44) 
    at org.apache.lucene.codecs.lucene40.Lucene40Codec.<init>(Lucene40Codec.java:52) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at java.lang.Class.newInstance0(Class.java:372) 
    at java.lang.Class.newInstance(Class.java:325) 
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:67) 
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:47) 
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:37) 
    at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:41) 
    at org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:125) 
    at org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:171) 
    at SearchEngine.Index.createIndexWriter(Index.java:88) 
    at SearchEngine.Index.<init>(Index.java:57) 
    at SearchEngine.SearchDB.searchDatabase(SearchDB.java:95) 
    at wa_poly.MyJFrame.<init>(MyJFrame.java:47) 
    at wa_poly.MyJFrame$5.run(MyJFrame.java:292) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:682) 
    at java.awt.EventQueue$3.run(EventQueue.java:680) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:691) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.codecs.sep.IntStreamFactory 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 41 more 

給出任何人都可以用溶液

+1

我最近遇到了一個類似的問題,那就是在3.6.2和4.9.0之間的某個時間從lucene-core中刪除了一個接口。嘗試更舊的版本,看看是否修復它。 –

+0

請檢查已提供的解決方案也可能對您有意思 – CodeAngel

+0

總是使用{}按鈕 –

回答

1

IntStreamFactory類位於lucene-codecs-4.9.0.jar,包org.apache.lucene.codecs.sep幫助的誤差。確保你的類路徑中有這個jar。

+0

來格式化您的代碼,因爲它解決了問題,但是如果我可能會問是否有關於IndexWriterConfig的問題。因爲NetBeans告訴我這是一個未使用的導入@Kevin – CodeAngel

+0

你不必導入這個類,它應該足以讓它在類路徑中。爲了回答你的問題,我認爲Lucene會加載'META-INF/services/org.apache.lucene.codecs.Codec'中提到的所有編解碼器。也許你可以刪除需要'IntStreamFactory'的Lucene 4.0編解碼器,但是這些工作是否值得付出? – mindas