找不到javac1.8类

时间:2013-12-20 11:26:47

标签: java eclipse ant classnotfound

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

13 个答案:

答案 0 :(得分:170)

Class not found: javac1.8

已知此错误发生在小于1.9.0的Apache Ant版本中 - 它们与Java 8不兼容。如果您正在使用Ant&lt;版本的Ant&lt; 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

答案 1 :(得分:14)

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

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

答案 2 :(得分:7)

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

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

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

答案 4 :(得分:2)

我尝试使用Eclise并得到了相同的错误未找到类:javac1.8

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

&gt; ant -version

  

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

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

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

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

  1. 右键单击build.xml文件
  2. 运行
  3. 外部工具配置
  4. 选择类路径选项卡
  5. 现在从这里更改ANT Home路径。

    enter image description here

答案 5 :(得分:1)

将Ant更新为1.9.x版本,因为Java 8与Ant版本少于1.9版本

不兼容

答案 6 :(得分:1)

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

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

  2. 选择Run As | External Tool Configurations

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

  4. 点击应用然后运行。

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

答案 7 :(得分:0)

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

  • 右键单击ant任务名称,例如&#34; compileCustomSrc&#34;在ant窗口中。
  • 选择Run As | External Tool Configurations
  • 然后在JRE标签上,选择Separate JRE: Java SE7或java 7的名称,然后点击Apply,然后点Run

您的蚂蚁任务将被执行,并且将正确构建!

答案 8 :(得分:0)

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

ant release -Dbuild.compiler = javac1.7

答案 9 :(得分:0)

你可以在你的系统上下载并解压缩ANT 1.10,并尝试在eclipse中为你的项目选择ANT到1.10。它应该工作,请阅读此更多详细信息。 http://devops-badal.blogspot.com/2017/02/class-not-found-javac18-issue-while.html

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

您可以下载更新版本的eclipse,其中在插件目录中包含更新版本的Ant。然后,将Ant jar复制到较早的eclipse的插件目录中。 Eclipse将自动指向较新版本的Ant。这适用于年长的开普勒和较新的Mars2。

答案 12 :(得分:0)

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

<property "build.compiler=javac1.7">