json 包com.fasterxml.Jackson.databind是不可访问的Java(268436910)

7fhtutme  于 2022-12-05  发布在  Java
关注(0)|答案(2)|浏览(215)

我最近探索了使用org.json库处理JSON数据,一切都很顺利。现在我开始了一个更大的Maven项目,我打算使用Jackson库来代替它。遗憾的是,它似乎不适合我。我想尝试ObjectMapper类,VScode自动完成了这个类,它也自动添加了所需的导入:

import com.fasterxml.jackson.databind.ObjectMapper;

然而,我也立即得到了一个错误的那一行:“类型com.fasterxml.Jackson.databind.对象Map器是不可访问的Java(16778666)
我已经向pom.xml文件添加了必要的依赖项,如下所示:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>13</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>13</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.14.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.14.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.14.0</version>
    </dependency>
</dependencies>

我错过了什么吗?还有什么我应该做的吗?

yzuktlbb

yzuktlbb1#

这不是Maven的问题。您可能已经为项目创建了一个package-info.java,因此所有依赖项都在模块路径上结束,但您的package-info.java缺少相应的声明。
您必须添加这样一行:

requires com.fasterxml.jackson.databind;

另请参阅:How to fix 'Package is declared in module, but module does not read it' error in IntelliJ JavaFX?

cedebl8k

cedebl8k2#

ObjectMapper所需的唯一依赖项是

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

发生此错误的原因是Jackson库未包含在项目的类路径中。可能是您的项目正在使用Java平台模块系统(JPMS);则日志还将包含:
...在“未命名模块”中声明...模块不读取它。
如果是这种情况,请将requires指令添加到module-info.java文件,以指定此模块需要jackson-databind库:

module correct.module.name {
  requires com.fasterxml.jackson.databind;
}

加入这个requires指示词之后,请再次重新编译项目。

相关问题