Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java can';找不到jackson jar文件_Java_Jar_Jackson_Classpath - Fatal编程技术网

Java can';找不到jackson jar文件

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中 我

我需要使用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

我能够毫无问题地编译这个类,并生成
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
添加到您的类路径中。

我该怎么做?我该怎么做?这很有效!我错过了核心和注释罐。这很有效!我错过了核心和注释罐。