2013-08-25 7 views
42

Jestem nowym użytkownikiem Jacksona i napisałem kod do ćwiczenia. Dowiedziałem się nowej wersji Jackson biblioteki można znaleźć na Fasterxml: Jackson, więc dodałem poniższe zależności do mojego pliku pom Maven:Prawidłowy zestaw zależności do korzystania z mappera Jacksona

<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

Spodziewałem się, że mogę użyć ObjectMapper bezpośrednio, jednak po spędzeniu dużo czasu okazało się, że do korzystania z ObjectMapper muszę dodać starych bibliotek poniżej:

<dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-core-asl</artifactId> 
      <version>1.9.2</version> 
     </dependency> 

jestem trochę zdezorientowany. Czy ktoś mógłby mi powiedzieć, dlaczego to jest?

+0

Czy masz problemy z nazwami pakietów? O ile widzę com.fasterxml.jackson.databind.ObjectMapper jest częścią jackson-databind-2.2.2.jar – efan

+0

Problem jest, że tak szybko, jak mogę usunąć ostatnie dwie zależności. Nie mogę skompilować mojego kodu z powodu ObjectMapper. co masz na myśli przez "nazwy pakietów"? thx – Hossein

+6

Dla mnie wygląda na to, że kod używa org.codehaus.jackson.map.ObjectMapper zamiast com.fasterxml.jackson.databind.ObjectMapper iz tego powodu nie mógł znaleźć klasy i nie mógł się skompilować. – efan

Odpowiedz

2

Nazwy pakietów w Jackson 2.x zostały zmienione na com.fasterxml1 z org.codehaus2. Więc jeśli potrzebujesz tylko ObjectMapper, myślę, że Jackson 1.X może zaspokoić twoje potrzeby.

6

Nie, można po prostu użyć com.fasterxml.jackson.databind.ObjectMapper. Najprawdopodobniej zapomniałeś naprawić swoje import -wskazania, skasuj wszystkie odniesienia do codehaus i jesteś złoty.

26
<properties> 
    <!-- Use the latest version whenever possible. --> 
    <jackson.version>2.4.4</jackson.version> 
</properties> 
<dependencies> 
    <dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>${jackson.version}</version> 
    </dependency> 
</dependencies> 

przydatne jest narzędzie ObjectMapper (z pakietu Jackson Databind). jeśli tak, to można zrobić:

JsonFactory factory = objectMapper.getFactory(); 

Źródło: https://github.com/FasterXML/jackson-core

Tak, "fasterxml" Zależności 3, które już masz w pom u'r wystarczą ObjectMapper gdyż zawiera Jackson-DataBind.

0

Spędziłem w tym czasie kilka godzin.

Nawet gdybym miał prawo zależnościach problem został rozwiązany dopiero po Usunąłem folder com.fasterxml.jackson w .m2 repozytorium pod C: \ Users \ username.m2 i aktualizowane projektowi

1

Oprócz ustalając import, zrób świeże maven clean compile -U. Zauważ opcję -U, która wprowadza nowe zależności, z którymi czasami trudno jest redaktorowi. Niech kompilacja się nie powiedzie z powodu nie importowanych klas, ale przynajmniej masz opcję importowania ich po komendzie maven.

Po prostu robi Maven-> Reimport z Intellij nie działa dla mnie.

Powiązane problemy