【问题标题】:IntelliJIdea: red line on a code snippet with error "cannot access org.codehaus.jackson.ObjectCodec"IntelliJIdea:代码片段上的红线出现错误“无法访问 org.codehaus.jackson.ObjectCodec”
【发布时间】:2018-06-27 12:36:42
【问题描述】:

前言:

API 方法 (import org.codehaus.jackson.map.ObjectMapper;)

@SuppressWarnings("unchecked")
public <T> T readValue(JsonParser jp, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException
{
    // !!! TODO
    //  _setupClassLoaderForDeserialization(valueType);
    return (T) _readValue(copyDeserializationConfig(), jp, _typeFactory.constructType(valueType));
}

ObjectMapper 类具有上述readValue 方法。

我的自定义类方法(如下)运行良好,没有错误,但我看到代码行 mapper.readValue(UserJson, in IntelliJ Idea... 出现“红线”

private User serializeFromJsonString(String UserJson) throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    return mapper.readValue(UserJson, User.class);
}

以照片为例:

【问题讨论】:

  • 所以我假设你的代码在命令行上编译得很好?您可以尝试在 IntelliJ 中使用干净的缓存进行重建(文件 -> 使缓存无效)。
  • 您的调用采用readValue(String, Class&lt;T&gt;) 方法签名。所以它与您问题中的readValue 不匹配。 ObjectCodec 类可以被ObjectMapper 间接引用。也许你错过了一个依赖。你是如何指定你的杰克逊依赖的?
  • 感谢你们两位帮助我。 @SteffenHarbich,抱歉我在这里提出了错误的 API 方法,这是实际方法,它接受 String.. @SuppressWarnings("unchecked") public T readValue(String content, Class valueType) throws IOException, JsonParseException , JsonMappingException { // !!! TODO // _setupClassLoaderForDeserialization(valueType);返回 (T) _readMapAndClose(_jsonFactory.createJsonParser(content), _typeFactory.constructType(valueType)); }

标签: json intellij-idea java-8 objectmapper


【解决方案1】:

谢谢 Stephan,LazerBass。“(文件 -> 无效缓存)”似乎不起作用,我昨天在 stackOverflow 中发布此 Qn 之前已经尝试过了。

今天没有出现错误..似乎 IDE 忽略了我的依赖项..

下面的依赖版本在我的 Spring-boot 应用程序中是硬编码的。

<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.4</version>
</dependency>

当我将一个 Maven 项目加载到 IntelliJ Idea 时,它会要求手动导入依赖项,并且对于这个“ObjectMapper”类,IDE 导入了 1.9.12 版本的 jackson-mapper-asl(理论上它必须我的项目中硬编码的 1.9.4 版本)。所以我去添加了额外的 1.9.4 jar,这是无关紧要的,但只是想检查一下。

我做了更多的研究并检查了所有版本中 ObjectMapper 类的“readValue”方法(链接:https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl),令人惊讶的是,这个 jackson-mapper-asl jar 的所有版本中都有这个方法。

缩小范围,问题似乎出在 intelliJ Idea 上,参考:https://intellij-support.jetbrains.com/hc/en-us/community/posts/207108385-IntelliJ-not-able-to-resolve-classes-of-external-Libraries-for-Maven-projects

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 2014-11-17
    • 2022-12-29
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2013-09-01
    • 2012-04-11
    相关资源
    最近更新 更多