首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除java.lang.NoSuchMethodError故障: java.util.Map.entry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry

问如何排除java.lang.NoSuchMethodError故障: java.util.Map.entry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry
EN

Stack Overflow用户
提问于 2021-04-03 01:01:19
回答 2查看 473关注 0票数 0

尝试对在类中构建静态映射的类进行单元测试,如下所示:

代码语言:javascript
复制
private static Map<String, SomeClass> MAP = new HashMap<>();
static {
    MAP = Map.ofEntries(
              Map.entry(SOME_KEY, new SomeClass()),
               .
               .
               .
              Map.entry(SOME_KEY, new SomeClass())
          );
}

当在构造类的过程中初始化map时,我得到了以下错误:

代码语言:javascript
复制
java.lang.NoSuchMethodError: java.util.Map.entry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry;

at package.ClassContainingMap.<clinit>(ClassContainingMap.java:36).

我在How do I fix a NoSuchMethodError?上看到过一篇关于解决这个错误的类似帖子,并尝试了在一个地方进行清理和重建,但都无济于事。接受的回应表明,可能正在使用单独的库版本来编译和运行代码,但我不知道如何确定这一点,因为我对Android和Java开发相对较新。我应该注意到,应用程序是使用去糖化来构建的,以允许使用一些较新的功能,并且不确定这是否与某些容量相关?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-04-03 01:14:05

这似乎与去丑化有关。Map.entry()方法在安卓使用的Java8和7中也不可用。

票数 1
EN

Stack Overflow用户

发布于 2021-04-03 01:57:52

NoSuchMethod错误告诉您该方法不存在。这通常意味着您在运行时使用了错误版本的库。

当您的工作环境与应用程序运行的环境不一致时,就会发生这种情况。在这种情况下,如果您使用与运行时相同的库,您的项目将无法编译。

因为这是JDK中的一种方法,并且是从JDK 9开始引入的,所以如果您使用jdk的早期版本来运行代码,它将无法工作。

请参阅javadoc:https://docs.oracle.com/javase/9/docs/api/java/util/Map.html#entry-K-V-

上面写着:

自: 9以来的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66922698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档