Java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory 错误信息:找不到 com/fasterxml/jackson/core/JsonFactory 类。

95

我正在开发 YouTube 直播 的示例。我创建了一个简单的 Java 项目 并添加了所需的 jar 包,但是在尝试运行该项目时会抛出异常。

异常:

Throwable: com/fasterxml/jackson/core/JsonFactory
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory
    at com.google.api.client.json.jackson2.JacksonFactory.<init>(JacksonFactory.java:44)
    at com.google.api.services.samples.youtube.cmdline.live.Auth.<clinit>(Auth.java:35)
    at com.google.api.services.samples.youtube.cmdline.live.CreateBroadcast.main(CreateBroadcast.java:55)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonFactory
    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 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 3 more

我从这个 GitHub 仓库下载了该项目。


你是用Maven运行它的吗? - Nitek
看起来 pom.xml 文件中缺少 com.fasterxml.jackson.core:jackson-core 依赖。 - Pro
您在运行时错过了一些在编译时使用的jar包。 - Fran Montero
@Nitek 不,我是通过进入项目属性选项并添加jar包来实现的。 - VVB
@NareshK 我没有使用Maven。 - VVB
@FranMontero 不,没有CTE。 - VVB
15个回答

2

您需要添加一个jar包:jackson-annotations-2.1.2.jar 您可以从这里下载并将其添加到类路径中。 如果您正在使用gradle,则添加以下依赖项。

compile 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.5.2'

1

我在使用Java 17的项目中遇到了同样的问题,我使用了这个依赖。

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.1</version>
        </dependency>

注意:spring boot会自动添加jackson的版本,您不需要手动添加。
我已经从pom.xml中将其移除。

1

大多数情况下是Jackson版本不兼容。升级Jackson版本,问题应该就解决了。


1
我已经复现了这个问题,如下所示:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature

带有依赖版本:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.3</version>
</dependency>

并且:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.1</version>
</dependency>

为了解决这个问题,我使用了:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.1</version>
</dependency>

1
我遇到了同样的问题,这是由于项目中存在冲突的Jackson版本导致的。
因此我在我的pom.xml文件中明确地定义了所有Jackson依赖项的相同版本。之后,当我运行jar包时就不会再出现错误并且已经得到了正确解决。
下面是我使用的内容:
<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.12.0</version>
    </dependency>

Maven依赖树存在版本冲突
(base) rohiagra-mac:test-secret rohiagra$ mvn dependency:tree|grep jackson
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.7.9:compile
[INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.7.9:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.7.9:compile
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.12.0:compile
[INFO] |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.12.0:compile
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.12.0:compile
[INFO] |  +- org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.32:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.9:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.9:compile

Maven依赖树与已解决的冲突。
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.7.9:compile
[INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.7.9:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.7.9:compile
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.12.0:compile
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.12.0:compile
[INFO] |  +- org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.32:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.9:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.12.0:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-core:jar:2.12.0:compile

这解决了我的问题。 - Aditya Goel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接