从java运行ant时,JAVA_HOME变量不正确

时间:2014-05-06 08:12:32

标签: java ant javac

我想通过ant构建我的代码(在netbeans IDE中编写)。当我通过命令行执行此操作时,我没有任何问题。但现在我必须通过Java来做到这一点。因此我使用此代码:

        File buildFile = new File("C:/Users/user1/Documents/project/trunk/src_java_fa2/RePestApplet/build.xml");
        Project p = new Project();
        p.setUserProperty("ant.file", buildFile.getAbsolutePath());
        p.init();
        ProjectHelper helper = ProjectHelper.getProjectHelper();
        p.addReference("ant.projectHelper", helper);
        helper.parse(p, buildFile);
        p.executeTarget(p.getDefaultTarget());

当我执行此操作时,我收到此错误:

Exception in thread "main" C:\Users\user1\Documents\project\trunk\src_java_fa2\RePestApplet\nbproject\build-impl.xml:894: The following error occurred while executing this line:
C:\Users\user1\Documents\project\trunk\src_java_fa2\RePestApplet\nbproject\build-impl.xml:1406: The following error occurred while executing this line:
C:\Users\user1\Documents\project\trunk\src_java_fa2\RePestStyle\nbproject\build-impl.xml:926: The following error occurred while executing this line:
C:\Users\user1\Documents\project\trunk\src_java_fa2\RePestStyle\nbproject\build-impl.xml:268: 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:\Program Files\jmonkeyplatform\jdk\jre"

所以它说我的JAVA_HOME变量没有设置为jdk。但是当我检查这个时,我看到了:

set JAVA_HOME
>>> JAVA_HOME=C:\Program Files\jmonkeyplatform\jdk

为什么认为JAVA_HOME变量设置为jre?

3 个答案:

答案 0 :(得分:1)

由于错误消息“com.sun.tools.javac.Main不在类路径上”指出,仅使用变量JAVA_HOME,因为它找不到编译器类com.sun.tools.javac.Main在课程路径上。

因此,在类路径中包含JDK的tools.jar会更容易,因此ant将在不依赖于环境变量的情况下找到类com.sun.tools.javac.Main

答案 1 :(得分:0)

XML文件的内容是什么?

一个疯狂的猜测,XMl文件是否有一些相对分配的路径 即/ bin / xyz ...而不是完整路径?

您可能希望在XML文件中使用完整路径(如果有)

答案 2 :(得分:0)

Id为您的代码添加一些调试输出 -

p.getProperty("java.home");

确认蚂蚁正在使用什么。如果错了,请将其设置为

p.setProperty("java.home", "C:\\Program Files\\jmonkeyplatform\\jdk");

至于为什么会这样 - 你的构建文件是否在改变java.home?