题 找不到javac1.8类


我安装了两个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在安装过程中是否设置了一些配置?


77
2017-12-20 11:26


起源




答案:


找不到类: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

164
2018-03-20 06:05



我遇到了这个问题和给定的标志(-Dbuild.compiler=javac1.7)直接传递给工作 ant 同样。 - cincodenada
Kristian的回答是正确的,我们可以在eclipse中生成ant-launch配置时添加-Dbuild.compiler = javac1.7bugs.eclipse.org/bugs/show_bug.cgi?id=409358>; - Shiva Achari
我找到了 码。他们正在测试您是否使用Java 1.3或更低版本。十多年前的旧旧代码。因此,每当Oracle推出新的1.x版本时,Ant都会中断。 Ant已经需要1.4或更高。他们应该从代码中删除此检查。 - David W.
@ David W - 为什么他们没有添加对Java 1.9和2.0的支持,因此这些更改将在未来6或8年内发挥作用。 Java 9即将推出,一切都将再次破裂.... - jww
该漏洞在2012年针对Eclipse的Ant 1.9.0修复,但Eclipse Kepler(2014!)中的Ant仍然是1.8.4,因此这个问题仍然存在。这是在Luna升级还是我们还在等? (我发现Eclipse的网站对于任何类型的正确更改跟踪都非常无用,并且知道什么版本的插件进入了什么版本;这有什么地方吗?) - Stuart Rossiter


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

这样就无需设置名为的Java System属性 build.compiler。只有在没有明确设定的情况下 compiler 属性 javac 任务,将Ant使用的值 build.compiler 作为后备。


13
2018-01-28 20:28



我当然赞成Kristian Holdus的回答。但是,我发现这对我的情况来说是一个更好的解决方案。通过强制调用者添加-D参数,我们很难将build.xml发送给外部用户。我们还需要提供额外的使用说明,这些说明总是越少越好:) - Rakesh N
它的工作,在建造时显示注释 [javac] warning: C:\Program Files\Java\jre1.8.0_152\lib\rt.jar(java/net/ConnectException.class): major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded. 等等 - aswzen


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

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


7
2017-10-24 18:31





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安装,因此1.8二进制文件(如 javac)没有找到。 将它们设置为Java 1.8安装,你应该没问题。


3
2017-12-20 11:28



但我不想使用jdk1.8。为什么Ant尝试使用1.8编译器进行此设置? - kamilz
使用“Run As”>“Ant Build ...”运行Ant构建,然后打开“JRE”选项卡并选择要用于运行脚本的“Runtime JRE”。 - Toni Toni Chopper
“javac”任务可以为较旧的vms生成字节代码,请参阅doco中的“target”属性: ant.apache.org/manual/Tasks/javac.html Java 1.5无法为以后的VM生成字节码。 - Mark O'Connor


我用Eclise试了一下,得到了同样的错误 找不到类:javac1.8

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

>反转

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

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

我只是编辑了Eclipse中的ANT HOME路径,它也可以在这里工作。 :)

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

  1. 右键单击build.xml文件
  2. 跑来跑去
  3. 外部工具配置
  4. 选择类路径选项卡

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

enter image description here


2
2017-11-07 21:21



你有什么改变ANT Home路径? - Igor Ganapolsky
嗨@IgorGanapolsky早期的Ant版本路径是Ant 1.8,我更新到最新的Ant版本1.9,如上图所示。它奏效了。希望我回答你的问题。 - KulDeep


将Ant更新为1.9.x版本,因为Java 8与Ant版本不兼容,而不是1.9版本


1
2018-02-11 13:35





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

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

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


0
2017-11-13 18:11