-1
我有利用IKVM涉及用於內Lucene的使用中提取文本和元數據的目的運行蒂卡(1.2),一個小型圖書館。我搶我們使用從CMS文檔和圖像路徑,並通過他們經過這裏:IKVM C#實現蒂卡 - 的NoClassDefFoundError - sun.java2d.Disposer
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
等)。
感謝那些誰知道更多關於提卡+ IKVM實現比我好。
提卡1.2是絕對古!當你升級到最近模糊的東西時會發生什麼? – Gagravarr
@Gagravarr - 我會更新並回復你。謝謝! –
@Gagravarr - 我更新到最新的.NET蒂卡lib和其他依賴,和它的工作就像一個魅力。謝謝! - 如果你想發佈一個答案,我會給你。 –