2017-02-14 13 views
1

Я обновляю до более поздней версии jackson (т. Е. От org.codehaus ... до com.fasterxml ...), и вдруг я столкнулся со многими странными ошибки. После нескольких часов попыток и корректировки я все еще не могу заставить его работать, поэтому я прошу вас, ребята, если вы можете мне помочь.jackson-databind "object не является экземпляром объявления класса"

У меня есть следующий метод:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("getTerminalsByIdAndLocation") 
List<SearchResultDto> getTerminalsByIdAndLocation(@QueryParam("location") String location, @QueryParam("id") Integer id) throws BusinessException; 

и что реализация функции просто делает поиск в хранилище.

SearchResultDto выглядит следующим образом:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class SearchResultDto implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private TerminalId terminalId; 
    private Integer location; 
    private String streetNumber; 
    private String postalcoldeCity; 
    private Status status; 

    // getters and setters with no annotation or so 
} 

Когда я теперь называю свой метод я получаю следующее сообщение об ошибке:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>.SearchResultDto["terminalId"])

После долгих попыток я думал, что я буду просто удалите terminalId, а затем он изменится на:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>AtmSearchResultDto["location"])

Я не знаю, что здесь не так?

EDIT

Я также попытался с помощью @JsonIgnore на все, кроме String streetNumber, но то же самое происходит исключение только для streetNumber

+0

У меня, похоже, есть проблемы с загрузчиками классов или около того. Я добавил некоторый отладочный вывод (или попытался) и получил ошибку, подобную: ' .SearchResultDto нельзя отнести к <длинному пакету> .SearchResultDto' –

ответ

1

Короче говоря: я испортил мой класс путь и там были два класса погрузчики , реализация метода REST, называемого репозиторием из модуля базы данных, откуда он получил экземпляр из другого загрузчика классов. После настройки моих областей maven и типов импорта он теперь работает!

Смежные вопросы