有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想通过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) 个答案

  1. # 1 楼答案

    XML文件的内容是什么

    猜测一下,XMl文件是否有一些相对指定的路径 i、 e,/bin/xyz。。。而不是完整的路径

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

  2. # 2 楼答案

    Id向代码中添加一些调试输出-

    p.getProperty("java.home");
    

    确认ant正在使用什么。如果错误,则将其设置为

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

    至于为什么会发生这种情况,是您的构建文件改变了java。家

  3. # 3 楼答案

    正如错误消息“com.sun.tools.javac.Main不在类路径上”指出的那样,使用变量JAVA_HOME只是因为它没有在类路径上找到编译器类com.sun.tools.javac.Main

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