Java 无法创建转换器运行时异常的实例

Java 无法创建转换器运行时异常的实例,java,json,jackson,versioning,runtimeexception,Java,Json,Jackson,Versioning,Runtimeexception,我正在考虑在我的项目中使用@jon peterson创建的,所以我正在创建一个测试Java项目,以便检查它是如何工作的 这是一个基本项目,有一个汽车类,我添加了一个版本模型。版本化模型转换器是一个空函数,我只希望项目能够成功执行。当我运行它时,我得到一个运行时异常 Exception in thread "main" java.lang.RuntimeException: unable to create instance of converter 'ToCurrentCarConverter'

我正在考虑在我的项目中使用@jon peterson创建的,所以我正在创建一个测试Java项目,以便检查它是如何工作的

这是一个基本项目,有一个汽车类,我添加了一个版本模型。版本化模型转换器是一个空函数,我只希望项目能够成功执行。当我运行它时,我得到一个运行时异常

Exception in thread "main" java.lang.RuntimeException: unable to create instance of converter 'ToCurrentCarConverter'
at com.github.jonpeterson.jackson.module.versioning.VersionedModelDeserializer.<init>(VersionedModelDeserializer.java:58)
at com.github.jonpeterson.jackson.module.versioning.VersioningBeanDeserializationModifier.createVersioningDeserializer(VersioningBeanDeserializationModifier.java:37)
at com.github.jonpeterson.jackson.module.versioning.VersioningBeanDeserializationModifier.modifyDeserializer(VersioningBeanDeserializationModifier.java:46)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:251)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:137)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:411)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:477)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4178)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3997)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2992)
at Main.main(Main.java:34)
Caused by: java.lang.IllegalAccessException: class com.github.jonpeterson.jackson.module.versioning.VersionedModelDeserializer cannot access a member of class ToCurrentCarConverter with modifiers ""
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:376)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:647)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:490)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:124)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:346)
at java.base/java.lang.Class.newInstance(Class.java:604)
at com.github.jonpeterson.jackson.module.versioning.VersionedModelDeserializer.<init>(VersionedModelDeserializer.java:56)
... 14 more
主要

import com.fasterxml.jackson.core.JsonProcessingException;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入com.fasterxml.jackson.databind.SerializationFeature;
导入com.github.jonperson.jackson.module.versioning.VersioningModule;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args){
ObjectMapper mapper=新的ObjectMapper();
enable(SerializationFeature.INDENT_输出);
registerModule(新版本模块());
列表功能=新建ArrayList();
特征。添加(“特征1”);
特征。添加(“特征2”);
特征。添加(“特征3”);
汽车=新车(5,“福特”,特征);
字符串carString=“”;
试一试{
carString=mapper.writeValueAsString(car);
System.out.println(carString);
}捕获(JsonProcessingException e){
e、 printStackTrace();
}
试一试{
Car readCar=mapper.readValue(carString,Car.class);
System.out.println(readCar.getBrand());
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
import com.github.jonpeterson.jackson.module.versioning.JsonVersionedModel;

import java.util.List;

@JsonVersionedModel(currentVersion = "1.0", toCurrentConverterClass = ToCurrentCarConverter.class)
public class Car {

private int seats;
private String brand;
private List<String> features;

public Car(){}

public Car(int seats, String brand, List<String> features){
    this.seats = seats;
    this.brand = brand;
    this.features = features;
}

public int getSeats() {
    return seats;
}

public void setSeats(int seats) {
    this.seats = seats;
}

public String getBrand() {
    return brand;
}

public void setBrand(String brand) {
    this.brand = brand;
}

public List<String> getFeatures() {
    return features;
}

public void setFeatures(List<String> features) {
    this.features = features;
}

}
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.jonpeterson.jackson.module.versioning.VersionedModelConverter;

class ToCurrentCarConverter implements VersionedModelConverter {
@Override
public ObjectNode convert(ObjectNode objectNode, String modelVersion, String targetModelVersion,
                          JsonNodeFactory jsonNodeFactory) {
    return objectNode;
}
}
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.github.jonpeterson.jackson.module.versioning.VersioningModule;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Main {

public static void main(String[] args) {

    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    mapper.registerModule(new VersioningModule());

    List<String> features = new ArrayList<String>();
    features.add("feature1");
    features.add("feature2");
    features.add("feature3");
    Car car = new Car(5, "Ford", features);

    String carString = "";

    try {
        carString = mapper.writeValueAsString(car);
        System.out.println(carString);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

    try {
        Car readCar = mapper.readValue(carString, Car.class);
        System.out.println(readCar.getBrand());
    } catch (IOException e) {
        e.printStackTrace();
    }


}

}