找不到 javac1.8 类

2022-08-31 12:21:03

我已经安装了两个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 编译了所有源代码都成功。但现在,我有以下错误消息:

Class not found: 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 在安装过程中是否设置了一些配置?


答案 1
Class not found: javac1.8

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

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

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

-Dbuild.compiler=javac1.7

答案 2

作为Kristian Holdhus的答案(标记为正确)的后续,您可以改为在Ant javac任务上使用该属性。设置应向后(最远可达 1.3)和向前兼容。compilercompiler="modern"

这样就无需设置名为 的 Java 系统属性。只有在没有显式设置任务的属性的情况下,Ant 才会使用 的值作为回退。build.compilercompilerjavacbuild.compiler


推荐