【问题标题】:Java cannot resolve symbol 'Maps'Java 无法解析符号“地图”
【发布时间】:2021-12-22 09:28:11
【问题描述】:

我正在尝试在 java 中使用 gson 和 guava 库来获取两个 JSON 文件之间的差异。

我收到错误:“无法解析符号'Maps'。我的 InteliJ 安装文件夹的 lib 文件夹中有 guava 库 jar 文件,pom.xml 文件中的依赖项如下所示:

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.0.1-jre</version>
        </dependency>

创建差异的函数如下所示

public static Map<String, Object> newCompare(JsonElement original, JsonElement output){
    Type type = new TypeToken<Map<String, Object>>(){}.getType();

    Map<String, Object> leftMap = gson.fromJson(original, type);
    Map<String, Object> rightMap = gson.fromJson(output, type);
    return Maps.Difference(leftMap, rightMap);
}

我尝试重新导入所有 maven 项目并寻找答案,但我找到的所有解决方案都是关于 android 地图的。 你能给我一些关于如何解决这个问题的建议,或者提出任何其他的解决方案吗?非常感谢。

【问题讨论】:

  • 错误消息和您发布的代码似乎不相关。您发布的代码中没有符号maps,只有Maps(大写在编程中很重要)。这是您发布问题时的拼写错误吗?
  • 是的,很抱歉,这是文本部分的错字,但代码中的大写字母没有问题。谢谢
  • 1.如果您将依赖项作为 maven 依赖项,那么您不需要 pom 文件中的条目(或者如果您坚持使用本地版本,则添加系统路径)。 2. 您是否有所需的import 类的完全限定名?

标签: java gson guava


【解决方案1】:

首先,在 Google 的 Guava 中是 Maps::difference,而不是 Maps::Difference(通常,我们从不使用 PascalCase 作为 Java 中的方法名称;而最好使用 camelCase约定)。

其次,截至your comment,我通过具有相同的依赖关系重现了您的问题:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

和导入

import com.google.common.collect.Maps;

之后,

Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new HashMap<>();

Maps.difference(map1, map2);

工作得很好。

【讨论】:

  • 谢谢,这肯定是我稍后会发现的错误,但不幸的是,在这种情况下,问题不在于使用的方法的名称,而在于无法识别的 Maps 类。
  • @timotej97 查看更新后的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2016-05-03
  • 2016-06-05
相关资源
最近更新 更多