找不到javac1.8类

kam*_*ilz 80 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>
Run Code Online (Sandbox Code Playgroud)

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

Kri*_*hus 172

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
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了这个问题,并且给定的标志(`-Dbuild.compiler = javac1.7`)也可以直接传递给`ant`. (9认同)
  • 我找到了[code](http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java?r1=1037667&r2=1345316&pathrev = 1345316&diff_format = F).他们正在测试您是使用Java 1.3还是以下.十多年前的旧旧代码.因此,每当Oracle推出新的1.x版本时,Ant都会中断.Ant已经需要1.4或更高.他们应该从代码中删除此检查. (5认同)
  • @ David W - 为什么他们没有添加对Java 1.9和2.0的支持,因此这些更改将在未来6或8年内发挥作用.Java 9即将推出,一切都将再次破裂.... (3认同)
  • 该漏洞在2012年针对Eclipse的Ant 1.9.0修复,但Eclipse Kepler(2014!)中的Ant仍然是1.8.4,因此这个问题仍然存在.这是在Luna升级还是我们还在等?(我发现Eclipse的网站对任何类型的正确变更跟踪完全没用,并且知道什么版本的插件进入了什么版本;这有什么地方吗?) (2认同)

Chu*_*els 14

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

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


小智 7

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

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