java.lang.ClassNotFoundException / NoClassDefFoundError for com/fasterxml/jackson/databind/ObjectMapper with Maven
尝试运行使用jackon的ObjectMapper类的Java程序时出现以下错误:
1 2 3 4 5 6 7 8 9 10 11 | 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存储库中的?/ .m2 / repository / com / fasterxml / jackson / core / jackson- [packagename] /2.4.0下有Jackson批注,databind(包含ObjectMapper)和核心JAR。 这是我的pom.xml的依赖项部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> jackson-annotations</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> jackson-databind</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> jackson-core</artifactId> <version>2.4.0</version> </dependency> </dependencies> |
这是我的CLASSPATH:
1 | :/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository |
所以Maven知道所有这些JAR信息-在哪里获取em,在哪里放置em等-但是java本身似乎找不到我需要的类。 我究竟做错了什么?? 谢谢!
默认的maven插件不会构建带有依赖项的胖子。
为了构建一个与它的依赖项捆绑在一起的jar,以便我们可以用
这是示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <build> <plugins> <plugin> maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <manifest> <mainClass>com.example.yourMain</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> |
现在您应该可以使用
1 | java -jar xxx-jar-with-dependencies.jar |
尝试重做Maven生命周期目标:
1 | mvn clean install -U |