可重现here :
我曾经使用过 java 8.x,一切正常。都打开jdk和Oracle。
升级 JDK 和 Oracle JDK 后,我收到 jackson
的异常.
Error:(10, 1) java: constructor ClientResponseData in class my.response.ClientResponseData cannot be applied to given types;
required: no arguments
found: java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length
我的 ClientResponseData 定义如下:
@JacksonXmlRootElement(localName = "ClientResponseData")
@Builder
@Getter
public class ClientResponseData {
@JacksonXmlProperty(localName = "responseCode")
private String responseCode;
@JacksonXmlProperty(localName = "number")
private String number;
}
在java更新之前对我有用的依赖项:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
在pom.xml中,我仍然使用:<java.version>1.8</java.version>
java升级后,我必须将Lombok至少更新到最新版本:1.18.8
然后我开始遇到问题。
Error:(10, 1) java: constructor ClientResponseData in class my.response.ClientResponseData cannot be applied to given types;
required: no arguments
found: java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length
它失败了:
return new com.fasterxml.jackson.dataformat.xml.XmlMapper().readValue(xmlString, cls);
知道如何让它发挥作用吗?
我尝试过:
添加@NoArgsConstructor - 不
将 Jackson 更新到最新版本 - 不
最佳答案
我发现 @AllArgsConstructor 和 public ClientResponseData() {} 的组合产生了一个技巧,并且开始起作用。
(对于 java 8,我不需要这样做,但对于 java11、12,这是我可以使其工作的唯一方法)
@JacksonXmlRootElement(localName = "ClientResponseData")
@Builder
@Getter
@AllArgsConstructor
@ToString
public class ClientResponseData {
public ClientResponseData() {}
@JacksonXmlProperty(localName = "responseCode")
private String responseCode;
@JacksonXmlProperty(localName = "number")
private String number;
}
如果有更好的解决方案,请告诉我!
另外:
@AllArgsConstructor + @NoArgsConstructor
也搞了个把戏。
关于java - lombok 和 jackson 不能与 openjdk 12 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56364760/