【问题标题】:IKVM C# Tika Implementation - NoClassDefFoundError - sun.java2d.DisposerIKVM C#​​ Tika 实现 - NoClassDefFoundError - sun.java2d.Disposer
【发布时间】:2016-03-15 00:08:32
【问题描述】:

我有一个小型库,它利用 IKVM 运行 Tika (1.2),以提取文本和元数据以在 Lucene 中使用。我从我们正在使用的 CMS 中获取文档和图像路径,并在此处传递它们:

public TextExtractionResult Extract(string filePath)
    {

        var parser = new AutoDetectParser();
        var metadata = new Metadata();
        var parseContext = new ParseContext();
        Class parserClass = parser.GetType();
        parseContext.set(parserClass, parser);

        try
        {
            // Attempt to fix ImageParser "NoClassDefFoundError"
            java.lang.System.setProperty("java.awt.headless", "true");

            var file = new File(filePath);
            var url = file.toURI().toURL();
            using (InputStream inputStream = TikaInputStream.get(url, metadata))
            {
                parser.parse(inputStream, getTransformerHandler(), metadata, parseContext);
                inputStream.close();
            }

            return AssembleExtractionResult(_outputWriter.toString(), metadata);
        }
        catch (Exception ex)
        {
            throw new ApplicationException("Extraction of text from the file '{0}' failed.".ToFormat(filePath), ex);
        }
    }

仅当文件为.png 时,才会出现此错误:

似乎它很可能来自 Tika 的ImageParser

有兴趣的朋友可以在这里查看getTransformerHandler()

private TransformerHandler getTransformerHandler()
    {

        var factory = TransformerFactory.newInstance() as SAXTransformerFactory;
        TransformerHandler handler = factory.newTransformerHandler();
        handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "text");
        handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
        handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "UTF-8");

        _outputWriter = new StringWriter();
        handler.setResult(new StreamResult(_outputWriter));
        return handler;
    }

我环顾四周,一直被指向无头奔跑的方向,所以我已经尝试过了,但没有运气。因为这是 IKVM 中的 C# 实现,所以缺少什么?据我所知,它适用于所有其他文档(.jpeg.docx.pdf 等)。

感谢那些比我更了解 Tika + IKVM 实现的人。

【问题讨论】:

  • Tika 1.2 绝对是古老的!当你升级到最近的东西时会发生什么?
  • @Gagravarr - 我会更新并回复你。谢谢!
  • @Gagravarr - 我更新到了最新的 Tika .NET 库和其他依赖项,它就像一个魅力。谢谢! - 如果您想发布答案,我会给您。
  • 如果您想要为您做这件事的东西,请查看 TikaOnDotnet。 kevm.github.io/tikaondotnet

标签: java c# noclassdeffounderror apache-tika ikvm


【解决方案1】:

Apache Tika 1.2 于 2012 年 7 月 17 日发布,there have been a lot of fixes and improvements 从那时起

您应该升级到最大的recent version of Apache Tika(写作时为 1.12),这应该可以解决您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2011-09-29
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多