JasperReports Jackson依赖冲突

时间:2016-11-22 12:39:55

标签: java maven jackson jasper-reports dropwizard

我正在使用JasperReports 6.3.1和一个Dropwizard 1.0.5项目,并且在淡化我的JSON响应时似乎与Jackson发生冲突。

我得到了:

Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:462)
....
Caused by: org.apache.jasper.JasperException

Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
...
Caused by: org.apache.jasper.el.JspELException
...
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectReader.getConfig()Lcom/fasterxml/jackson/databind/DeserializationConfig;

我尝试从我的Maven依赖项中排除jackson-core,但它没有做到这一点。 正如我所见,Jasper使用2.1.4而Dropwizard使用2.7.8

<dependency>
      <groupId>net.sf.jasperreports</groupId>
      <artifactId>jasperreports</artifactId>
      <version>6.3.1</version>
      <exclusions>
        <exclusion>
          <artifactId>jackson-core-asl</artifactId>
          <groupId>org.codehaus.jackson</groupId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

2 个答案:

答案 0 :(得分:3)

我解决了我的问题。 问题在于,当我使用Dropwizard应用程序(v 1.0.5)时,它与jackson 2.7.8一起使用。

JasperReports也使用jackson,但它使用的是2.1.4。

反序列化JSON对象时,它使用的是JasperReports的库(v 2.1.4),它没有所有需要的功能。

我通过在我的pom.xml中添加jackson库(核心和注释)来解决这个问题。

         <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.7.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.8</version>
        </dependency>

答案 1 :(得分:1)

Objectreader类出现在jackson-databind二进制文件中。

你可以尝试排除jackson-databind而不是jackson-core-asl。

    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.3.1</version>
        <exclusions>
            <exclusion>
                <artifactId>jackson-databind</artifactId>
                <groupId>com.fasterxml.jackson.core</groupId>
            </exclusion>
        </exclusions>
    </dependency>