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

标签 java json rest wildfly apache-tika

我有一个提供解析和搜索功能的 Java EE 7 Web 应用程序。使用 tika-parsers 1.10 时,一切正常,但一旦我升级到 1.11,我的 REST 服务就无法读取/写入 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。知道如何解决这个问题吗?

最佳答案

金比正确地指出了这一点。我必须添加排除项到 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-Services 再次工作以及我的大部分 tika 解析测试(例如 docx、pdf、ppt、html)。 但现在,当尝试解析 odt 文件 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)
...

关于Java EE 7 Webapp - 将 tika-parsers 升级到 1.11 后 REST-Services(json) 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942596/

相关文章:

Java 方法覆盖 - "Method does not override method from super..."

java - struts2-json-plugin JSONWriter 注入(inject)实战

rest - 如何在 win 上查看 httpS 请求和 header ?

c# - 带有 VS 2015 的 RESTful Web 服务

rest - Azure 调度程序 -;底层连接已关闭: Could not establish trust relationship for the SSL/TLS secure channel

java - 尝试在页面上定位文本元素

java - 如何以适合 JAXB 和 Java 的方式表示 XML 模式中的对象层次结构

java - 接口(interface)作为数据结构的一部分

java - 如何在列表中计算相似id对象并在recyclerview中显示?

json - 使用 Docker Compose 将 JSON 文件读取到环境变量中