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