Java EE 7 Webapp - 将tika-parsers升级到1.11后REST-Services(json)的问题

时间:2016-01-22 08:57:08

标签: java json rest wildfly apache-tika

我有一个Java EE 7 WebApplication,提供解析和搜索功能。使用 tika-parsers 1.10 时,一切正常,但一旦升级到 1.11 ,我的REST-Services就无法读取/写入json。

    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-parsers</artifactId>
        <version>1.11</version>
    </dependency>

错误讯息:

javax.ws.rs.client.ResponseProcessingException: No message body reader has been found for class de.drivve.km.idd.IddAccount, ContentType: application/json
at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:433)
at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:384)
at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:319)

我在Wildfly 10上运行,其他一些依赖项可能值得注意:

    ...
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <scope>provided</scope>
    </dependency>
    ...
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.7.0</version>
    </dependency>
    ...

似乎使用apache-cxf(tika-parsers所需)而不是jackson来读/写json。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

Gimby正确地指出了这一点。我必须为tika-parser-dependency添加排除

    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-parsers</artifactId>
        <version>1.11</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-rs-client</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

现在我的 REST服务再次工作和我的大多数tika解析测试(例如docx,pdf,ppt,html)。 但现在,当尝试解析odt-file tika失败时出现以下异常:

java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.toString(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/String;
at org.apache.tika.parser.pkg.ZipContainerDetector.detectOpenDocument(ZipContainerDetector.java:192)
at org.apache.tika.parser.pkg.ZipContainerDetector.detectZipFormat(ZipContainerDetector.java:145)
at org.apache.tika.parser.pkg.ZipContainerDetector.detect(ZipContainerDetector.java:90)
at org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:77)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:112)
...