我最近更新了我现有的tika项目,使用tika 1.13而不是1.10。我唯一做的就是将依赖版本从1.10更改为1.13。该项目成功建成。然而,每当我尝试运行应用程序时,我都会遇到此异常:
java.lang.RuntimeException: Unable to parse the default media type registry
at org.apache.tika.mime.MimeTypes.getDefaultMimeTypes(MimeTypes.java:580)
at org.apache.tika.config.TikaConfig.getDefaultMimeTypes(TikaConfig.java:69)
at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:218)
at org.apache.tika.config.TikaConfig.getDefaultConfig(TikaConfig.java:341)
at org.apache.tika.parser.AutoDetectParser.<init>(AutoDetectParser.java:51)
at com.app.tikamanager.MetaParser.<init>(MetaParser.java:54)
at com.app.services.MyService.HandleItemInThread(IntelligentDocumentsService.java:260)
at com.app.intelligentservicebase.ItemHandlerThread.run(ItemHandlerThread.java:41)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.tika.mime.MimeTypeException: Invalid type configuration
at org.apache.tika.mime.MimeTypesReader.read(MimeTypesReader.java:126)
at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:64)
at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:93)
at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:170)
at org.apache.tika.mime.MimeTypes.getDefaultMimeTypes(MimeTypes.java:577)
... 10 more
Caused by: org.xml.sax.SAXNotRecognizedException: http://javax.xml.XMLConstants/feature/secure-processing
at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
at org.apache.tika.mime.MimeTypesReader.read(MimeTypesReader.java:119)
... 14 more
从我的MetaParser
类的构造函数抛出异常,唯一的事情是AutoDetectParser
的初始化:
private final AutoDetectParser _tikaExtractor;
public MetaParser()
{
_tikaExtractor = new AutoDetectParser();
}
我正在使用Oracle JDK 1.8.0_91-b14在Ubuntu 14.04上运行该应用程序。
我在网上看了这个例外被提了几次,一次可能的修复就是安装OpenJDK,但那是旧版本的Tika,因为旧版本曾经用同样的JDK工作,所以我没有认为这就是问题。
在调用AutoDetectParser
构造函数之前,我需要做些什么或初始化吗?
答案 0 :(得分:6)
将评论提升为答案 - 您的类路径上有一个非常旧版本的Xerces。你的JVM正在选择它作为默认的XML Parser,所以当Tika说&#34;嗨JVM时,我能否拥有一个安全的XML Parser&#34;它失败了。
(Tika在1.10到1.13期间对XML解析如何完成进行了改进,包括设置更安全的默认值,这就是为什么开始发生这种情况)
您需要删除旧的Xerces jar,以便开始使用JVM提供的XML Parser,或者用更新的Xerces版本替换它们
您也可以在Error unmarshalling XML in Java 8 “secure-processing org.xml.sax.SAXNotRecognizedException”中找到一些有用的建议,特别是如果您正在努力在您的构建中找到讨厌的旧Xerces jar!