82

我已经安装了两个 jdk - jdk 1.5 和 jdk 1.8。我有以下 Ant build.xml 配置文件:

<target name="compileCustomSrc">
    <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5" >
        <classpath>
            <fileset dir="C:/lib/">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

在安装 jdk1.8 之前,从 Eclipse 调用的 Ant 编译所有源代码成功。但是现在,我收到以下错误消息:

找不到类:javac1.8

我的 JAVA_HOME 和 JRE_HOME:

JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

并在 Eclipse JRE 中设置为 1.5。Java 1.8 在安装过程中是否设置了一些配置?

4

13 回答 13

175
找不到类:javac1.8

已知低于 1.9.0 的 Apache Ant 版本会发生此错误 - 它与 Java 8 不兼容。如果您使用的是低于 1.9.0 的 Ant 版本,则应更新到 1.9.x 版本。

这是相关的错误报告:https ://issues.apache.org/bugzilla/show_bug.cgi?id=53347

顺便说一句,如果您只想使用 Java 8 进行编译,但不需要编译任何实际的 Java 8 语法,那么您可以将以下参数传递给 javac 作为解决方法,这将允许您继续使用旧版本的 Ant :

-Dbuild.compiler=javac1.7
于 2014-03-20T06:05:26.123 回答
14

作为 Kristian Holdhus 答案的后续(标记为正确),您可以改用Ant javac taskcompiler上的属性。设置应该是向后的(回溯到 1.3)和向前兼容。compiler="modern"

这避免了设置名为build.compiler. 只有在没有明确设置任务compiler属性的情况下javac,Ant 才会使用该值build.compiler作为后备。

于 2015-01-28T20:28:47.893 回答
7

我有同样的问题。我正确设置了 JAVA_HOME 和 JRE_HOME。我也有 Ant > 1.9。

我所做的修复它是进入 Eclipse 到 Window -> Preferences。展开 Ant 并选择 Runtime。默认情况下,应该选择 Classpath 选项卡,并且在右侧有一个名为“Ant Home”的按钮。单击此按钮并仔细检查它是否指向您的 Ant 文件夹。

于 2014-10-24T18:31:34.260 回答
3
JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

您的 JAVA_HOME 和 JRE_HOME 设置为 Java 1.5 安装,因此javac找不到 1.8 二进制文件(如 )。将它们设置为 Java 1.8 安装,你应该没问题。

于 2013-12-20T11:28:12.127 回答
2

我用 Eclise 试了一下,得到了同样的错误Class not found: javac1.8

我在我的系统上验证了 ANT 版本

>ant-版本

2015 年 6 月 29 日编译的 Apache Ant(TM) 版本 1.9.6

当我尝试从命令提示符运行 build.xml 时,它起作用了。然后我在 Eclipse 中检查,它指的是旧版本的 ANT。

我只是在 Eclipse 中编辑了 ANT HOME 路径,它也从这里开始工作。:)

下面是需要在 Eclipse 中编辑 ANT 路径的图像。

  1. 右键单击 build.xml 文件
  2. 运行方式
  3. 外部工具配置
  4. 选择类路径选项卡

现在从这里更改 ANT Home 路径。

在此处输入图像描述

于 2015-11-07T21:21:49.223 回答
1

将 Ant 更新到 1.9.x 版本作为 Java 8 与低于 1.9 的 Ant 版本不兼容

于 2015-02-11T13:35:24.110 回答
1

我尝试了所有其他解决方案,但都没有奏效。我终于在 Eclipse 中找到了适合我的方法,请按照下列步骤操作:

  1. 右键单击ant 任务名称,例如ant 窗口中的`myBuild.xml。

  2. 选择Run As | External Tool Configurations

  3. 然后在 JRE 选项卡上,选择单独的 JRE:Java JDK7 或您的 java 7 名称。

  4. 点击应用,然后运行。

您的 ant 任务将被执行,并将正确构建!

于 2021-01-26T08:11:25.350 回答
0

我尝试了所有其他解决方案,但都没有奏效。我终于在 Eclipse 中找到了适合我的方法:

  • 右键单击 ant 任务名称,例如ant窗口中的“compileCustomSrc”。
  • 选择Run As | External Tool Configurations
  • 然后在JRE选项卡上,选择Separate JRE: Java SE7或命名您的 java 7,然后Apply点击Run.

您的 ant 任务将被执行,并将正确构建!

于 2015-11-13T18:11:29.613 回答
0

将 Ant 更新为 Java 8 到 1.9.x 版本,与低于 1.9 的 Ant 版本或在命令 put -Dbuild.compiler=javac1.7 之后不兼容,请参见以下内容:

蚂蚁发布-Dbuild.compiler=javac1.7

于 2015-12-03T17:10:55.703 回答
0

您可以在系统上下载并解压缩 ANT 1.10,然后尝试将 Eclipse 中的 ANT 主页为您的项目更改为 1.10。它应该可以工作,阅读此内容以获取更多详细信息。http://devops-badal.blogspot.com/2017/02/class-not-found-javac18-issue-while.html

于 2017-02-27T02:16:38.983 回答
0

有时,通过 ANT 构建战争时的问题也与 build.properties 文件中的 java 版本不匹配有关,因为 build.XML 尝试使用 build.compiler 属性中提到的 java 版本

检查 build.compiler 属性是否与预期的 java 版本相同。

于 2018-01-08T08:48:40.247 回答
0

您可以下载较新版本的 eclipse,它在 plugins 目录中包含较新版本的 Ant。然后,将 Ant jar 复制到旧版 eclipse 的插件目录中。Eclipse 将自动指向较新版本的 Ant。这对我来说适用于较旧的开普勒和较新的 Mars2。

于 2019-04-03T01:47:02.103 回答
0

我有同样的问题。我能够通过设置属性在 build.xml 中解决它。

<property "build.compiler=javac1.7">
于 2020-06-03T18:40:34.130 回答