如何解决以下问题" NoClassDefFoundError"在我的Apache Tika代码中?

时间:2017-03-31 23:56:40

标签: java apache apache-tika

我有一个使用Apache Tika 1.14的简单类,它显示在这里:

import java.io.File;
import java.io.IOException;

import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.apache.tika.mime.*;
import org.xml.sax.SAXException;
import org.apache.tika.config.*;


public class TikaExtraction {

   public static void main(final String[] args) throws IOException, TikaException {

      //Assume sample.txt is in your current directory              
      File file = new File("sample.txt");

      //Instantiating Tika facade class
      Tika tika = new Tika();
      String filecontent = tika.parseToString(file);
      System.out.println("Extracted Content: " + filecontent);
   }

}

但是,当我尝试运行它时,我收到以下错误消息:

  

线程中的异常" main" java.lang.NoClassDefFoundError:   组织/阿帕奇/蒂卡/ MIME / MimeTypesReader           在org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:158)           at org.apache.tika.mime.MimeTypes.getDefaultMimeTypes(MimeTypes.java:577)           在org.apache.tika.config.TikaConfig.getDefaultMimeTypes(TikaConfig.java:73)           在org.apache.tika.config.TikaConfig。(TikaConfig.java:222)           在org.apache.tika.config.TikaConfig.getDefaultConfig(TikaConfig.java:345)           在org.apache.tika.Tika。(Tika.java:116)           在TikaExtraction.main(TikaExtraction.java:17)引起:java.lang.ClassNotFoundException:org.apache.tika.mime.MimeTypesReader           at java.net.URLClassLoader.findClass(URLClassLoader.java:381)           at java.lang.ClassLoader.loadClass(ClassLoader.java:424)           at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)           at java.lang.ClassLoader.loadClass(ClassLoader.java:357)           ......还有7个

当我搜索Tika库代码时,我没有看到.class类的MimeTypesReader文件。有没有办法注释掉一些代码或修复此问题 - 我将如何解决此错误消息?

或者这可能是我使用的Tika版本的问题(即引用的代码来自1.6,也许我有1.13或1.14)。

1 个答案:

答案 0 :(得分:2)

对于这种类型的库错误,它不会删除某些内容,而是添加缺少的内容,因此ClassNotFoundError。大多数情况下,您要么缺少一些支持jar,要么因库更新而存在兼容性问题。事实上,你自己说了

  

当我搜索Tika库代码时,我没有看到.class类的MimeTypesReader文件。

这是抛出异常的库方法:

/**
 * Creates and returns a MimeTypes instance from the specified document.
 * @throws MimeTypeException if the type configuration is invalid
 */
public static MimeTypes create(Document document) throws MimeTypeException {
    MimeTypes mimeTypes = new MimeTypes();

    //For some reason the MimeTypesReader is missing
    new MimeTypesReader(mimeTypes).read(document);
    mimeTypes.init();
    return mimeTypes;
}

确保您提供了完整的库以及最新的 - tika-1.14。你可以从these Apache mirrors之一获得它。

来源是tika-core.jar的一部分,所以请确保您也有。{/ p>