Java can';找不到jackson jar文件
我需要使用jackson来处理代码中的一些JSON。我编写了一个简单的测试类来让它工作Java can';找不到jackson jar文件,java,jar,jackson,classpath,Java,Jar,Jackson,Classpath,我需要使用jackson来处理代码中的一些JSON。我编写了一个简单的测试类来让它工作 import com.fasterxml.jackson.databind.ObjectMapper; 公开课考试{ 公共静态void main(字符串[]args){ ObjectMapper ObjectMapper=新的ObjectMapper(); } } 我将jackson-databind-2.9.9.1.jar放在/dirwherejarresidents/jdk/jre/lib/ext中 我
import com.fasterxml.jackson.databind.ObjectMapper;
公开课考试{
公共静态void main(字符串[]args){
ObjectMapper ObjectMapper=新的ObjectMapper();
}
}
我将jackson-databind-2.9.9.1.jar
放在/dirwherejarresidents/jdk/jre/lib/ext
中
我能够毫无问题地编译这个类,并生成Test.class
javac Test.java
然而,我似乎无法让java找到jar并执行该类
java -cp "/dirwhereclassresides/java" Test Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit>(JacksonAnnotationIntrospector.java:37)
at com.fasterxml.jackson.databind.ObjectMapper.<clinit>(ObjectMapper.java:291)
at Test.main(Test.java:5)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
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)
... 3 more
java-cp”/dirwhereclassresides/java“线程”main中的测试异常java.lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonView
在com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector上。(JacksonAnnotationIntrospector.java:37)
位于com.fasterxml.jackson.databind.ObjectMapper。(ObjectMapper.java:291)
at Test.main(Test.java:5)
原因:java.lang.ClassNotFoundException:com.fasterxml.jackson.annotation.JsonView
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3个以上
我尝试添加jar所在的路径,但得到了相同的错误
java -cp "/dirwhereclassresides/java:/dirwherejarresides/jdk/jre/lib/ext/jackson-databind-2.9.9.1.jar" Test
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit>(JacksonAnnotationIntrospector.java:37)
at com.fasterxml.jackson.databind.ObjectMapper.<clinit>(ObjectMapper.java:291)
at Test.main(Test.java:5)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
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)
... 3 more
java-cp”/dirwhereclassresides/java:/dirwherejarresides/jdk/jre/lib/ext/jackson-databind-2.9.9.1.jar“测试
线程“main”java.lang.NoClassDefFoundError中出现异常:com/fasterxml/jackson/annotation/JsonView
在com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector上。(JacksonAnnotationIntrospector.java:37)
位于com.fasterxml.jackson.databind.ObjectMapper。(ObjectMapper.java:291)
at Test.main(Test.java:5)
原因:java.lang.ClassNotFoundException:com.fasterxml.jackson.annotation.JsonView
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3个以上
我需要做什么才能让java看到jar?通常,ClassNotFoundException是使用两个不同版本的相同软件包的副作用。打印出一个依赖关系树,并查看没有加载同一依赖关系的两个版本 通常,ClassNotFoundException是两个版本不同的相同软件包的副作用。打印出一个依赖关系树,并查看没有加载同一依赖关系的两个版本 Jackson库被分成几个jar模块,这些模块声明彼此之间的依赖关系。例如:
jackson数据绑定
依赖于jackson注释
和jackson核心
jackson-databind-*.jar
实际上并不包含异常所涉及的JsonView
注释类。它被放置在jackson annotations-*.jar
文件中。但是为了能够用Jackson解析JSON,您肯定还需要Jackson-core-*.jar
顺便说一句,传递类路径的第二种方法更正确,您需要在Unix/Linux系统上的-cp
参数中列出类所依赖的所有jar文件。例如
$ java -cp ".:/pathtojackson/jackson-databind-2.9.9.1.jar:/pathtojackson/jackson-core-2.9.9.jar:/pathtojackson/jackson-annotations-2.9.9.jar" Test
您还可以在
-cp
参数中使用星型表达式,请参见Jackson库被拆分为几个jar模块,这些模块声明彼此之间的依赖关系。例如:jackson数据绑定
依赖于jackson注释
和jackson核心
jackson-databind-*.jar
实际上并不包含异常所涉及的JsonView
注释类。它被放置在jackson annotations-*.jar
文件中。但是为了能够用Jackson解析JSON,您肯定还需要Jackson-core-*.jar
顺便说一句,传递类路径的第二种方法更正确,您需要在Unix/Linux系统上的-cp
参数中列出类所依赖的所有jar文件。例如
$ java -cp ".:/pathtojackson/jackson-databind-2.9.9.1.jar:/pathtojackson/jackson-core-2.9.9.jar:/pathtojackson/jackson-annotations-2.9.9.jar" Test
您也可以在
-cp
参数中使用星型表达式,请参见它正在抱怨注释/JsonView
,似乎找到了jackson数据绑定
。由于您没有使用maven,我怀疑数据绑定的可传递依赖项jackson core
没有被注入
尝试将
jackson-core
添加到您的类路径中。它正在抱怨annotation/JsonView
,似乎找到了jackson-data-bind
。由于您没有使用maven,我怀疑数据绑定的可传递依赖项jackson core
没有被注入
尝试将
jackson-core
添加到您的类路径中。我该怎么做?我该怎么做?这很有效!我错过了核心和注释罐。这很有效!我错过了核心和注释罐。