通过java代码调用ant构建

通过java代码调用ant构建,java,ant,Java,Ant,我想通过java代码执行ant构建。我使用下面的代码,得到错误 Ant helper = new Ant(); helper.setTarget("build_new"); helper.setAntfile("build_new.xml"); helper.execute(); 错误: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at org.apache.tools.ant.taskde

我想通过java代码执行ant构建。我使用下面的代码,得到错误

Ant helper = new Ant();
helper.setTarget("build_new");
helper.setAntfile("build_new.xml");
helper.execute();
错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at org.apache.tools.ant.taskdefs.Ant.init(Ant.java:125) at org.apache.tools.ant.taskdefs.Ant.reinit(Ant.java:139) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:292) at com.demo.test.JavaSamp$4.actionPerformed(JavaSamp.java:216) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.AbstractButton.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常 位于org.apache.tools.ant.taskdefs.ant.init(ant.java:125) 位于org.apache.tools.ant.taskdefs.ant.reinit(ant.java:139) 位于org.apache.tools.ant.taskdefs.ant.execute(ant.java:292) 在com.demo.test.JavaSamp$4.actionPerformed上(JavaSamp.java:216) 在javax.swing.AbstractButton.fireActionPerformed(未知源) 位于javax.swing.AbstractButton$Handler.actionPerformed(未知源) 在javax.swing.DefaultButtonModel.fireActionPerformed(未知源) 位于javax.swing.DefaultButtonModel.setPressed(未知源) 位于javax.swing.AbstractButton.doClick(未知源代码) 位于javax.swing.plaf.basic.BasicMenuItemUI.doClick(未知源代码) 位于javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(未知源代码) 位于java.awt.Component.ProcessMouseeEvent(未知源) 位于javax.swing.JComponent.ProcessMouseeEvent(未知源) 位于java.awt.Component.processEvent(未知源) 位于java.awt.Container.processEvent(未知源) 位于java.awt.Component.dispatchEventImpl(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.dispatchEvent(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Window.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.EventQueue.dispatchEventImpl(未知源) 位于java.awt.EventQueue.access$000(未知源) 在java.awt.EventQueue$1.run处(未知源) 在java.awt.EventQueue$1.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源) 在java.awt.EventQueue$2.run处(未知源) 在java.awt.EventQueue$2.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源) 位于java.awt.EventQueue.dispatchEvent(未知源) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源) 位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源) 位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源) 位于java.awt.EventDispatchThread.run(未知源)
任何建议都可以用来执行ant构建

File buildFile = new File("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());

问了34个问题,仍然没有格式化代码和异常。查找Ant.java的源代码。去125行。看看那里发生了什么。我猜你的目标不存在,或者你的ant文件路径错误。你使用的ant版本是什么?如果没有版本信息,很难从src查看正在发生的事情:(