我在尝试运行使用同时杰克逊的ObjectMapper类的Java程序时出现以下错误:抛出java.lang.ClassNotFoundException /对NoClassDefFoundError的COM/fasterxml /杰克逊/数据绑定/ ObjectMapper与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
我有Jackson批注,数据绑定(包含ObjectMapper)以及我的Maven仓库中的〜/ .m2/repository/com/fasterxml/jackson/core/jackson- [软件包名称] /2.4.0下的核心JAR。这里是我的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>
这里是我的CLASSPATH:
:/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository
这样的Maven知道所有这些JAR - 从哪里得到他们,在那里把他们,等等 - 但java本身似乎无法找到我需要的类。我究竟做错了什么??谢谢!
运行罐子看看http://stackoverflow.com/questions/18429468/correct-依赖于套件的使用杰克逊映射器 – 2014-09-26 23:13:01
感谢弗雷德里克。我通过将Jackson JAR复制到〜/ Library/Java/Extensions来解决我的问题。我仍然不确定为什么我以前能够运行我的程序,而没有这样做。我猜Maven使用它的JAR存储库,当你通过exec插件执行一个程序时,但是java命令没有。这也不能解释为什么当我通过命令行-cp选项传递JAR的位置时,java找不到Jackson。 – 2014-09-28 14:57:49