原因是长而枯燥,但我需要运行Ant脚本从Java应用程序1.4编译Java 1.5代码。我不断收到这个错误,虽然:

BUILD FAILED

build.xml:16: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\j2sdk1.4.2_16\jre"

在我的代码,我有:

Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04");
p.fireBuildStarted();
p.init();
// so on and so forth

,但它会忽略它。我也试过p.setUserProperty(字符串,字符串),但是,这并不做的伎俩,无论是。有没有办法做到这一点,而无需启动一个单独的进程?

有帮助吗?

解决方案

在是否构建文件的javac任务已经fork="yes"?如果没有,那么也无所谓什么java.home属性设置为;蚂蚁将尝试呼叫在相同的java程序中的javac Main方法,该方法从你的错误是一个JRE,而不是一个JDK。

修改试试你的javac任务的executable属性设置为完整路径javac二进制和添加compiler="extJavac"的任务。

其他提示

不应反斜线翻倍?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");

您设置环境变量JAVA_HOME和ANT_HOME正常?如果您是通过代码设置它应该工作,虽然。

另外,请检查您是否%JAVA_HOME%\ bin目录下%ANT_HOME%\ bin中,应在环境变量 '路径'。

您的问题似乎是与不存在于ENVT的%JAVA_HOME%\ bin中。可变路径虽然。

,使这项工作的另一种方法是“的tools.jar”添加到类路径。 javac编译器包含在此罐中。

java命令$ JAVA_HOME / lib中/的tools.jar ...

javac的选项是在tools.jar中可用。在Eclipse中,即使你的JRE HOME指向一个JDK,所有的系统库指向JDK_HOME \ JRE \ lib中。没有tools.jar中。你可以作为一个外部JAR文件添加的tools.jar。这应该解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top