java.lang.ClassNotFoundException / NoClassDefFoundError for com / fasterxml / jackson / databind / ObjectMapper with Maven

尝试运行使用jackon的ObjectMapper类的java程序时出现以下错误:

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 

我有我的Maven存储库中的Jackson注释,databind(包含ObjectMapper)和核心JAR,位于〜/ .m2 / repository / com / fasterxml / jackson / core / jackson- [packagename] /2.4.0下。 这是我的pom.xml的依赖项部分:

   com.fasterxml.jackson.core jackson-annotations 2.4.0   com.fasterxml.jackson.core jackson-databind 2.4.0   com.fasterxml.jackson.core jackson-core 2.4.0   

这是我的CLASSPATH:

 :/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository 

所以Maven知道所有这些JAR – 在哪里获取em,在哪里放em等等 – 但java本身似乎无法找到我需要的类。 我究竟做错了什么?? 谢谢!

尝试重做maven生命周期目标:

 mvn clean install -U 

默认的maven插件不会构建带有依赖项的胖jar。

要构建一个与其依赖项捆绑在一起的jar,以便我们可以使用java -jar执行它,我们可以使用maven-assembly-plugin ,它将jar包装为名称xxx-jar-with-dependencies.jar

这是一个示例pom.xml

    maven-assembly-plugin 3.0.0   jar-with-dependencies    com.example.yourMain      make-assembly  package   single       

现在你应该可以运行你的jar了

 java -jar xxx-jar-with-dependencies.jar