Java + Eclipse:方法computeIfAbsent(String,(<no type =“”> k) - &gt; {})未定义类型

时间:2016-12-06 03:28:04

标签: java eclipse priority-queue

我正在使用Eclipse(Mars.1版本(4.5.1))并遇到以下错误:The method putIfAbsent(String, new PriorityQueue<>()) is undefined for the type Map<String,PriorityQueue<String>>。一切似乎都正确完成但仍然得到错误。我能错过什么?

Map<String, PriorityQueue<String>> targets = new HashMap<>();

...


for(String[] ticket: tickets) {
    targets.putIfAbsent(ticket[0], new PriorityQueue<>());
}

修改 做了以下,但仍然收到错误

enter image description here

enter image description here

编辑2

添加了Java 8 SE,但仍然收到错误。

enter image description here

enter image description here

enter image description here

编辑3

enter image description here

3 个答案:

答案 0 :(得分:0)

Java 7中没有方法Map#putIfAbsent(K key, V value),但Java 8中有方法。参见:

在您的特定情况下,请确保Eclipse下的项目属性(如下所述)设置为Java 8.您可以通过执行以下操作来编辑它们:右键单击项目&gt;属性

  • 项目属性&gt; Java构建路径
  • 项目属性&gt; Java Comiler

这是一个可能的解决方案:

Java Build Path

如果您的Java Build Path定位到Java 7,请按照以下步骤进行更改:

  • 选择 JRE系统库
  • 点击右侧的编辑... 按钮
  • 使用以下选项之一
    • 全局:工作区默认JRE。确保将其设置为Java 8
    • 本地:替代JRE。选择Java 8。

设置完成后,您可以继续检查Java Complier。

Java Complier - project settings Java Complier - Eclipse settings

现在,您应该毫无问题地运行您的项目。

  

我是否必须单独对每个项目执行此操作,还是适用于所有项目?

您不必为每个项目执行此操作。您可以为此工作区的所有项目进行设置。

要为所有项目设置Java运行时环境,您可以检查安装了哪些JRE并更改默认项目。

  • 转到 Eclipse &gt; 首选项...
  • 搜索JRE
  • 检查已安装的JRE
    • 如果您最近安装的JRE没有出现,请使用按钮添加... 逐个手动添加它们。或者使用搜索... 按钮自动添加它们。
    • 选择您想要的默认JRE

如屏幕截图所示:默认情况下,已检查的JRE会添加到新创建的Java项目的构建路径中。现在所有项目都可以。

Installed JREs

要编辑特定项目的JRE,您可以。以下是执行此操作的步骤:

  • 选择目标项目,右键单击&gt; 属性
  • 选择 Java构建路径
  • 编辑 JRE系统库
  • 从中选择您首选的JRE版本
    • 执行环境
    • Alternate JRE
    • 工作区默认JRE

答案 1 :(得分:0)

虽然您已为Java 8设置了编译器设置,但您的项目仍在其构建路径中引用Java 7系统库(根据问题中的las屏幕截图,编辑3 )。您需要选择该系统库( JavaSE-1.7 )并使用编辑... 按钮将其更改为 JavaSE-1.8 ) - 您在&#34;编辑2&#34;中添加的那个;更新

如果您想知道,不同之处在于编译器如何为您的代码生成.class文件(编译器合规性设置)与Java标准库的版本之间的区别用于编译( JRE系统库)。这两件事是分开的,但通常配置为相互匹配。

答案 2 :(得分:-1)

仅在Java 8中支持。

确保选中以下内容:

  1. 转到您的环境变量(开始 - &gt;在搜索框中输入环境变量)
  2. 确保您的java_home具有适用于jdk 1.8.x版本的bin,并且它包含在您的路径中。 (参考,您也可以在这里查看:Environment variables for java installation
  3. 设置环境变量后重启你的eclipse。未定义应该消失。