从JAVA运行Ant时设置JAVA_HOME
原因很长也很无聊,但我需要运行一个Ant脚本来从Java1.4应用程序编译Java1.5代码。不过,我一直会遇到这样的错误:从JAVA运行Ant时设置JAVA_HOME,java,ant,javac,Java,Ant,Javac,原因很长也很无聊,但我需要运行一个Ant脚本来从Java1.4应用程序编译Java1.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:\j2sd
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(String,String),但这也不管用。有没有一种方法可以在不启动单独流程的情况下执行此操作?反斜杠是否应该加倍
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");
构建文件中的javac任务是否具有
fork=“yes”
?如果不是,那么java.home
属性设置为什么并不重要;ant将尝试在同一个java进程中调用javacMain
方法,这是一个JRE,而不是JDK
编辑尝试将javac任务的
可执行
属性设置为javac
二进制文件的完整路径,并将compiler=“extJavac”
添加到任务中。是否正确设置了环境变量JAVA\u HOME和ANT\u HOME?如果您是通过代码进行设置,那么它应该可以工作
还要检查%JAVA\u HOME%\bin目录%ANT\u HOME%\bin是否应位于环境变量“path”中
您的问题似乎是环境中不存在%JAVA\u HOME%\bin。变量路径。另一种方法是将“tools.jar”添加到类路径中。javac编译器包含在这个jar中
java-cp$java_HOME/lib/tools.jar…javac选项在tools.jar中可用。在eclipse中,即使您的JRE HOME指向jdk,所有系统库都指向jdk_HOME\JRE\lib。没有tools.jar。可以将tools.jar添加为外部jar文件。这将解决您的问题他们是。我认为粘贴到StackOverflow时出现了一些问题。添加fork=“yes”确实有帮助——至少可以运行javac,但它仍然是错误的版本。我正在寻找类似“executable”属性的内容,只是没有看到它。我不得不为每个javac任务设置它,这很烦人,但它可以工作。Thank.FYI:
java.home
必须设置为$java\u home/jre
,而不是$java\u home
本身。