我正在使用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>
答案 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>