我安装了两个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在安装过程中是否设置了一些配置?
答案 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路径的图像。
答案 5 :(得分:1)
将Ant更新为1.9.x版本,因为Java 8与Ant版本少于1.9版本
不兼容答案 6 :(得分:1)
我尝试了所有其他解决方案,但都没有奏效。我终于在 Eclipse 中找到了一种对我有用的方法,请按照以下步骤操作:
右键单击 ant 任务名称,例如`myBuild.xml 在 ant 窗口中。
选择Run As | External Tool Configurations
。
然后在 JRE 选项卡上,选择单独的 JRE:Java JDK7 或任何您的 Java 7 名称。
点击应用然后运行。
您的 ant 任务将被执行,并将正确构建!
答案 7 :(得分:0)
我尝试了所有其他解决方案,但都没有奏效。我终于找到了一种适用于Eclipse的方法:
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">