java.lang.ClassNotFoundException / NoClassDefFoundError für com/fasterxml/jackson/databind/ObjectMapper mit Maven
Bekomme ich die folgende Fehlermeldung, wenn Sie versuchen zum ausführen einer java-Programm, das mit jackon ' s ObjectMapper Klasse:
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
Ich habe die Jackson-Anmerkungen, databind (enthält ObjectMapper), und core-JARs in mein Maven-repository unter ~/.m2/repository/com/fasterxml/jackson/core/jackson-[packagename]/2.4.0. hier ist der Abhängigkeiten Abschnitt meines 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>
hier ist mein CLASSPATH:
:/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository
also Maven weiß alles über diese Gläser - wo kommen em, wo em, etc. - aber java selbst kann nicht scheinen zu finden, die Klassen, die ich brauche. was mache ich falsch?? danke!
- haben Sie einen Blick auf stackoverflow.com/questions/18429468/...
- Dank Frederic. Ich löste mein problem durch kopieren der Jackson Gläser zu ~/Library/Java/Extensions. Ich bin mir immer noch nicht sicher, warum, konnte ich mein Programm vorher, ohne das getan. Ich denke, Maven nutzt seine JAR-repository, wenn Sie ein Programm ausführen, die über die exec-plugin, aber der java-Befehl nicht. dass auch nicht erklären, warum java nicht finden konnte, Jackson, wenn ich an die Lage der Gläser über den command-line-cp-option.
Du musst angemeldet sein, um einen Kommentar abzugeben.
redo versuchen maven lifecycle Ziele:
Die Standard-maven-plugin nicht bauen eine fat jar mit Abhängigkeiten.
Build eine jar gebündelt mit seinen Abhängigkeiten, damit wir ausführen können, es mit
java -jar
können wir maven-assembly-plugin, welche Pakete das Glas mit dem Namenxxx-jar-with-dependencies.jar
.Hier ist ein Beispiel
pom.xml
Nun sollten Sie in der Lage zu laufen Sie Ihr Glas mit