【问题标题】:Building with Ant in Eclipse - javac not recognizing lambda expression (Java 1.8)在 Eclipse 中使用 Ant 构建 - javac 无法识别 lambda 表达式 (Java 1.8)
【发布时间】:2016-04-12 05:31:48
【问题描述】:

我正在尝试在 Eclipse 中使用 Ant 构建一个现有项目。问题是javac 无法识别其中一个文件中使用了 Lambda 表达式 (error: illegal start of expression),并且在 Ant 的 compile 阶段构建失败。

在 Eclipse 中,我确保将 Java Compiler 合规级别设置为 1.8,并且 Java 8 在 Java Build Path 中。

我还确保我的PathJAVA_HOMEJRE_HOME 都指向我的Java 8 目录(在Path 中它指向/bin 目录)。

对于咯咯笑,我的build.xml 文件的编译部分是:

<target name="compile" depends="setup">
    <javac destdir="${base}/${build.dir}"
           srcdir="${base}/${src.dir}"
           deprecation="true"
           verbose="false"
           includeantruntime="false">
           <classpath refid="libs" />
    </javac>
</target>

我不确定下一步该做什么。我已经求助于重新启动 Eclipse,希望能发生奇迹。欢迎任何建议或帮助!提前致谢。

【问题讨论】:

  • 你用的是哪个版本的eclipse?
  • 当您在 Eclipse 下运行 Ant 时,它会使用 Ant 安装中配置的任何内容。您还必须正确配置 Ant 以使用 Java 8。
  • 使用&lt;echo&gt;Java version: ${ant.java.version}&lt;/echo&gt;查看你在运行ant时实际使用的是哪个版本
  • Ant 'javac' 任务对您在 Eclipse 中设置的合规性级别等事情一无所知。您需要指定这些是“javac”任务的属性。

标签: java eclipse ant version


【解决方案1】:

&lt;echo&gt; Java version: ${ant.java.version}&lt;/echo&gt; 添加到我的build.xml 表明Ant 仍在运行Java 1.7。

我添加了我的 Java 8 javac 的目录位置,并使用 executablefork 属性修改了 javac 任务以使用它:

<property name="javac1.8" location="/path/to/java8/bin/javac" />
<target name="compile" depends="setup">
    <javac executable="{$javac1.8}" fork="yes"
           destdir="${base}/${build.dir}"
           srcdir="${base}/${src.dir}"
           deprecation="true"
           verbose="false"
           includeantruntime="false">
           <classpath refid="libs" />
    </javac>
</target>

非常感谢 @Jim Garrison、@wero 和 @greg-449 的 cmets。结合你的力量,我得到了答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多