2014-02-18 5 views
1

Я использую банки Jackson (ядро 2.3.1, аннотации 2.2.3, databind 2.3.1, все последние со страницы загрузки), чтобы прочитать Json-файл, захватить то, что я нужно поместить его в новый объект и записать/распечатать, что объект в файл или экран.Jackson JSON Mapping «NoClassDefFoundError: JsonPropertyDescription»

Я видел большинство примеров говорят, что это так легко, как

ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValueAsString(object); 

Или

ObjectWriter mapper = new ObjectMapper().writer().withDefaultPrettyPrinter(); 
writer.writeValueAsString(object); 

Хотя у меня есть необходимые Jar, я постоянно получаю ошибки ClassNotFoundException: com.fasterxml. jackson.annotation.JsonPropertyDescription.

После копать глубже я считаю, что JsonPropertyDescription классом, который находится в GitHub для Джексона, является не упакован с аннотациями 2.2.3 баночки.

Так ли это было устарело, и есть какой-то новый способ, который я не видел, чтобы взять объект и напечатать его на json, или был ли этот класс случайно оставлен из новой версии?

+1

Подождите, почему вы используете -core 2.3.x и -annotations 2.2.x? – fge

+0

Для аннотаций 2.2x - последняя версия. Я знаю, что это сбивает с толку, из-за этого открылась проблема github. Я думаю, что баннер аннотаций должен быть более статичным, поэтому он не будет обновляться так часто. –

+0

Можете ли вы попробовать с -core 2.2.x и посмотреть, работает ли он? – fge

ответ

0

Не уверен, что если вы решили это уже обновив ваши банки, но здесь идут ответы на некоторые вопросы:

Upon digging deeper I find that the JsonPropertyDescription class that is in the github for jackson, is not packaged with the annotations 2.2.3 jar.

Это new feature in 2.3.

Is there some new way I haven't seen to take an object and print it to json?

Я не думаю так: writeValueAsString() 2.3.3 (это не рекомендуется).

Похоже, у кого-то был similar problem, и решение, которое они предложили, в основном «обновляет ваши банки». Ответчик не ответил, поэтому мы не знаем, работает это или нет.

+0

Мы закончили тем, что отказались от Джексона, поскольку обновление банок должно было пройти через весь бюрократический процесс утверждения. –

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