ottengo il seguente errore quando si tenta di eseguire un programma Java che utilizza classe ObjectMapper di Jackon:java.lang.ClassNotFoundException/NoClassDefFoundError per com/fasterxml/Jackson/databind/ObjectMapper con Maven
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
at com.inin.dynamotransfer.DynamoTransfer.importData(DynamoTransfer.java:133)
at com.inin.dynamotransfer.DynamoTransfer.main(DynamoTransfer.java:67)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 2 more
ho la Annotazioni di Jackson, database (che contiene ObjectMapper) e core JAR nel mio repository Maven sotto ~/.m2/repository/com/fasterxml/jackson/core/jackson- [nomepacchetto] /2.4.0. ecco la sezione dipendenze del mio pom.xml:
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
Ecco il mio CLASSPATH:
:/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository
modo Maven sa tutto di questi vasi - Dove ottenere em, dove poter mettere em, ecc - ma java non sembra in grado di trovare le classi di cui ho bisogno. Che cosa sto facendo di sbagliato?? Grazie!
dare un'occhiata a http://stackoverflow.com/questions/18429468/correct- set-of-dependencies-per-using-jackson-mapper –
grazie Frederic. Ho risolto il mio problema copiando i Jackson JAR in ~/Library/Java/Extensions. Non sono ancora sicuro del motivo per cui sono stato in grado di eseguire il mio programma in precedenza, senza averlo fatto. Immagino che Maven usi il suo repository JAR, quando esegui un programma tramite il plugin exec, ma il comando java no. anche questo non spiega perché java non sia riuscito a trovare Jackson quando ho passato la posizione dei JAR tramite l'opzione -cp della riga di comando. –