【问题标题】:The "import java.util.function cannot be resolved" error“无法解析导入 java.util.function”错误
【发布时间】:2014-08-05 01:00:38
【问题描述】:

I'm trying to run this practice script 来自standard Oracle Java tutorials

这似乎是一个常见错误,我已使用 SO 资源尝试解决此问题。我试过清理项目、刷新项目、切换工作场所并切换回来、删除并重新添加 JRE7。

我不知道还能做什么。

import java.util.List;
import java.util.function.Consumer; -----> cannot be resolved ERROR
import java.util.function.Function; -----> cannot be resolved ERROR
import java.util.Comparator;
import java.util.function.Predicate; -----> cannot be resolved ERROR
import java.lang.Iterable;
import java.time.chrono.IsoChronology; -----> cannot be resolved ERROR

public class LambdaExpressions_RosterTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    }

【问题讨论】:

  • 你运行的是 Java 8 吗?
  • 四个包都来自Java 8。您需要配置SDK以引用Java 8来修复此错误。
  • 我是新手。你怎么知道你在跑什么?我正在使用 Eclipse Android 开发者工具...

标签: java import java-8


【解决方案1】:

根据java.util.function Javadoc,

Since:
      1.8

所以升级到 Java 8,或者尝试查找旧版本的教程。

我是新手。你怎么知道你在跑什么?我正在使用 Eclipse

要在 Eclipse 中确定您当前的 Java 版本,请转到

Help -> About Eclipse -> Installation Details (Button in
          lower Left) -> Configuration pane

在我的机器上查找java.specification.version

java.specification.version=1.8

或者java.runtime.version这一行——在我的机器上

java.runtime.version=1.8.0_11-b12

【讨论】:

  • 在 Eclipse 中,我如何知道我正在运行什么 Java?
  • 我正在运行,带有 ADT 的 Eclipse。它与那些步骤不同。我现在正在研究这个......
  • 右键单击项目,然后是属性,然后是 Java 编译器,并注意“编译器合规级别”。如果您没有看到可用的 1.8,请先安装它,然后将其添加到 Eclipse,然后您就可以使用它了。
  • @StacyM Windows x86 - 如果您在多台机器上安装,离线版本可以为您节省大量时间,在线版本在安装过程中动态下载 Java 安装内容。
  • 想通了! Window - Preferences - Java - Installed JREs - Add Standard VM - path to C: Program Files\Java\jre8.
【解决方案2】:

我通过尝试以下解决方案解决了这个问题

项目 > 属性 > Java 构建路径
选择库选项卡
选择 JRE 系统库
点击编辑按钮
选择备用 JRE (jre1.8.0_20)
点击完成按钮

【讨论】:

    【解决方案3】:

    Lambda 表达式是 Java 8 中新添加的。它们不适用于 JRE7。 尝试将 Eclipse 项目的 JRE 升级到 8(窗口 -> 首选项->java-> 编译器)。

    【讨论】:

      【解决方案4】:

      对于idea IntelliJ,您需要转到菜单-> 项目结构-> 模块,在这里您将看到源选项卡,在此选项卡上方您可以看到语言级别。改成8以上。

      -yash

      【讨论】:

        【解决方案5】:

        我与 Apache Camel 有类似的情况: 以下功能不再起作用

        String headerKey = exchange.getIn().getHeader("headerKey",String.class);
        

        因为错误消息:

        The type java.util.function.Supplier cannot be resolved. It is indirectly referenced from required .class files
        

        为了解决这个问题,我改变了演员阵容,然后它就起作用了:

        String headerKey = (String) exchange.getIn().getHeader("headerKey");
        

        也许它可以帮助你或其他人。

        这里要提到的另一点是 Apache Camel 版本本身,如官方页面 linked here 所述。

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,我在 eclipse.ini 文件中进行了更改,然后 做了 -Dosgi.requiredJavaVersion=1.8 而不是 -Dosgi.requiredJavaVersion=1.6 我的问题已经解决了。

          【讨论】:

            【解决方案7】:

            当我在以下属性中使用的版本为 1.8 的版本解决了我的问题。

            <properties>
                 <maven.compiler.source>1.9</maven.compiler.source>
                 <maven.compiler.target>1.9</maven.compiler.target>
            </properties>
            

            【讨论】:

              【解决方案8】:

              我在尝试将 Java 9 与 Eclipse Oxygen 一起使用时遇到了这个问题。 Eclipse 声称我使用的是低于 Java 1.8 的版本,并询问我是否想使用 1.8。说是解决了这个问题,但后来导致了这个错误消息。

              我进入 Window => Preferences => Java => Compiler,看到它已更改为 1.8,因此我将其更改回 9,现在一切似乎都正常了。

              【讨论】:

                猜你喜欢
                • 2018-02-26
                • 1970-01-01
                • 1970-01-01
                • 2011-05-18
                • 2014-07-16
                • 2021-02-13
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多