JasperReports Jackson 依赖冲突
JasperReports Jackson dependency conflict
我将 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;
我尝试将 jackson-core
从我的 Maven 依赖项中排除,但它不起作用。
如我所见,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>
Objectreader
class 存在于 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>
我解决了我的问题。
问题是,当我使用 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>
我将 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;
我尝试将 jackson-core
从我的 Maven 依赖项中排除,但它不起作用。
如我所见,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>
Objectreader
class 存在于 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>
我解决了我的问题。 问题是,当我使用 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>