otrzymuję następujący błąd podczas próby uruchomienia programu java, który używa jackon za ObjectMapper Klasa:java.lang.ClassNotFoundException/NoClassDefFoundError dla com/fasterxml/Jackson/DataBind/ObjectMapper z 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
mam Adnotacje Jacksona, databind (która zawiera ObjectMapper) i podstawowe pliki JAR w repozytorium Maven pod ~/.m2/repository/com/fasterxml/jackson/core/jackson- [nazwa-pakietu] /2.4.0. tutaj jest odcinek zależności od mojego 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>
oto moja CLASSPATH:
:/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository
tak Maven wie wszystko o tych słoików - gdzie dostać em, gdzie umieścić em, itd. - ale java nie może znaleźć klas, których potrzebuję. Co ja robię źle?? dzięki!
spojrzeć http://stackoverflow.com/questions/18429468/correct- set-of-dependencies-for-using-jackson-mapper –
dzięki Fryderykowi. Rozwiązałem swój problem, kopiując pliki JAR Jacksona do ~/Library/Java/Extensions. Nadal nie jestem pewien, dlaczego byłem w stanie uruchomić mój program wcześniej, nie robiąc tego. Domyślam się, że Maven używa repozytorium JAR podczas wykonywania programu za pomocą wtyczki exec, ale polecenie java tego nie robi. to również nie wyjaśnia, dlaczego java nie może znaleźć Jacksona, gdy przekazałem lokalizację JARów za pomocą opcji wiersza poleceń -cp. –