【问题标题】:Apache Lucene 4.9.0 class not found errorApache Lucene 4.9.0 类未找到错误
【发布时间】:2014-07-17 00:05:45
【问题描述】:

我 我将 Apache Lucene 4.9 与 NetBeans 7.2 一起用于桌面应用程序。 我创建了一个标准分析器,因此想使用分析器 创建 IndexWriterConfig。但是他的 InexWriterConfig 给出了一个 class not found 错误

这是代码 sn-p。

// 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

谁能帮忙解决一下

【问题讨论】:

  • 我最近遇到了一个类似的问题,该接口在 3.6.2 和 4.9.0 之间的某个时间从 lucene-core 中删除。尝试旧版本,看看是否能解决问题。
  • 请检查是否已提供解决方案,您可能也感兴趣
  • 始终使用 {} 按钮格式化您的代码

标签: java apache netbeans lucene


【解决方案1】:

IntStreamFactory 类驻留在lucene-codecs-4.9.0.jar,包org.apache.lucene.codecs.sep。确保你的类路径中有这个 jar。

【讨论】:

  • 谢谢它解决了这个问题,但如果我可能会问这与 IndexWriterConfig 有什么关系。因为 NetBeans 告诉我这是一个未使用的导入 @Kevin
  • 你不必导入这个类,将它放在类路径中就足够了。为了回答您的问题,我认为 Lucene 会加载 META-INF/services/org.apache.lucene.codecs.Codec 中提到的所有编解码器。也许您可以删除需要 IntStreamFactory 的 Lucene 4.0 编解码器,但节省的费用值得吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
相关资源
最近更新 更多