我安装了两个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在安装过程中是否设置了一些配置?
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
有时在通过ANT构建战争时的问题也与build.properties文件中的java版本未匹配有关,因为build.XML尝试使用build.compiler属性中提到的java版本
检查build.compiler属性是否与预期的java版本相同。
您可以下载更新版本的eclipse,其中包含插件目录中较新版本的Ant。然后,将Ant jar复制到旧的eclipse的插件目录中。 Eclipse将自动指向较新版本的Ant。对于我来说,这适用于较旧的开普勒和更新的Mars2。
作为Kristian Holdhus答案的后续(标记为正确),您可以使用compiler
上的Ant javac task属性。设置compiler="modern"
应该都是向后的(早在1.3)和向前兼容。
这样就无需设置名为build.compiler
的Java System属性。只有在没有在compiler
任务上明确设置javac
属性的情况下,Ant才会使用build.compiler
的值作为后备。
我有同样的问题。我正确设置了JAVA_HOME和JRE_HOME。我也有Ant> 1.9。
我做的是修复它进入Eclipse到Window - > Preferences。展开Ant并选择Runtime。默认情况下,应选择Classpath选项卡,在右侧有一个名为“Ant Home”的按钮。单击此按钮并仔细检查它是否指向您的Ant文件夹。
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安装,你应该没问题。
将Ant更新为1.9.x版本,因为Java 8与Ant版本不太相似,而不是1.9版本
我尝试了所有其他解决方案,但都没有奏效。我终于找到了一种适用于Eclipse的方法:
ant
窗口中的“compileCustomSrc”。Run As | External Tool Configurations
JRE
选项卡上,选择Separate JRE: Java SE7
或java 7命名的任何内容,然后点击Apply
然后点击Run
。您的ant任务将被执行,并将正确构建!
将Ant更新为1.9.x版本,因为Java 8与Ant版本少于1.9版本或在命令put -Dbuild.compiler = javac1.7之后不兼容,请参阅以下内容:
ant release -Dbuild.compiler = javac1.7
你可以在你的系统上下载并解压缩ANT 1.10并尝试将eclipse中的ANT主页更改为1.10。它应该工作,请阅读此更多详细信息。 qazxsw poi