首页 > 解决方案 > IntelliJIdea:代码片段上的红线出现错误“无法访问 org.codehaus.jackson.ObjectCodec”

问题描述

前言:

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 Idea red line_error

标签: jsonintellij-ideajava-8objectmapper

解决方案


谢谢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


推荐阅读