2013-08-25 14 views
42

Sono nuovo di Jackson e stavo scrivendo del codice per la pratica. Ho scoperto la nuova versione di Jackson libreria si possono trovare sul Fasterxml: Jackson, così ho aggiunto le dipendenze di seguito per il mio file pom Maven:Corretto insieme di dipendenze per l'utilizzo del mappatore Jackson

<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> 

mi aspettavo che posso usare l'ObjectMapper direttamente, tuttavia dopo aver trascorso un sacco di tempo ho scoperto che per utilizzare l'ObjectMapper devo aggiungere le vecchie librerie di seguito:

<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> 

io sono un po 'confuso. Qualcuno potrebbe dirmi perché è così?

+0

Hai problemi con i nomi dei pacchetti? Per quanto vedo com.fasterxml.jackson.databind.ObjectMapper è parte di jackson-databind-2.2.2.jar – efan

+0

Il problema è che non appena rimuovo le ultime due dipendenze. Non riesco a compilare il mio codice a causa di ObjectMapper. cosa intendi per "nome del pacchetto"? thx – Hossein

+6

Per me sembra che il codice stia utilizzando org.codehaus.jackson.map.ObjectMapper invece di com.fasterxml.jackson.databind.ObjectMapper e per questo motivo non è stato possibile trovare la classe e non è stato possibile compilare. – efan

risposta

2

I nomi dei pacchetti in Jackson 2.x sono stati modificati in com.fasterxml1 da org.codehaus2. Quindi, se hai solo bisogno di ObjectMapper, penso che Jackson 1.X possa soddisfare le tue esigenze.

6

No, è possibile utilizzare semplicemente com.fasterxml.jackson.databind.ObjectMapper. Molto probabilmente hai dimenticato di aggiustare i tuoi import -statements, elimina tutti i riferimenti a codehaus e sei d'oro.

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> 

si dispone di un ObjectMapper (dal pacchetto Jackson Databind) a portata di mano. se è così, si può fare:

JsonFactory factory = objectMapper.getFactory(); 

Fonte: https://github.com/FasterXML/jackson-core

Così, i 3 dipendenze "fasterxml" che hai già nel pom u'r sono sufficienti per ObjectMapper in quanto include jackson-databind.

0

Ho trascorso alcune ore su questo.

Anche se avevo il diritto dipendenza problema è stato risolto solo dopo che ho cancellato la cartella com.fasterxml.jackson nel repository .m2 in C: \ Users \ username.m2 e aggiornato il progetto

1

parte fissando le importazioni, fare un nuovo maven clean compile -U. Nota l'opzione -U, che introduce nuove dipendenze che a volte l'editor ha difficoltà con. Lascia che la compilazione fallisca a causa di classi non importate, ma almeno hai un'opzione per importarle dopo il comando maven.

Solo fare Maven-> Reimport di Intellij non ha funzionato per me.

Problemi correlati