在Eclipse中使用Java代码调用ant出现的异常
来源:互联网 发布:windows机器码 编辑:程序博客网 时间:2024/06/05 04:41
由于项目的需求,需要在Eclipse中使用Java代码直接调用ant。调用的方法如下:
public class AntOperator {public static void main(String[] args) {// TODO Auto-generated method stubAntOperator ao=new AntOperator();ao.operateAnt("E:/antstudy/build.xml");}public void operateAnt(String path){File buildfile=new File(path);Project p=new Project();p.init();ProjectHelper helper=ProjectHelper.getProjectHelper();helper.parse(p, buildfile);p.executeTarget(p.getDefaultTarget());}}
但是在调用时,出现了如下异常:
Exception in thread "main" E:\antstudy\build.xml:70: 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 "F:\Program Files\Java\jre7"at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:130)at org.apache.tools.ant.taskdefs.Javac.findSupportedFileExtensions(Javac.java:984)at org.apache.tools.ant.taskdefs.Javac.scanDir(Javac.java:961)at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:932)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.Target.execute(Target.java:435)at org.apache.tools.ant.Target.performTasks(Target.java:456)at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)at org.apache.tools.ant.Project.executeTarget(Project.java:1364)at com.lotuseed.realTimeComputing.learning.ant.test1.AntOperator.operateAnt(AntOperator.java:22)at com.lotuseed.realTimeComputing.learning.ant.test1.AntOperator.main(AntOperator.java:13)
网上很多材料说的不够明确,我再看了后想重新整理一下。
首先要明确一个问题,就是ant进行编译时,需要的javac命令是在大家非常熟悉的tools.jar中的。因此,当单独调用ant时,ant会根据系统中设置的JAVA_HOME寻找这个包。但是在Eclipse中,当运行Java程序时,使用的是F:\Program Files\Java\jre7(也就是说使用的是安装jdk时额外安装的jre),在这个jre中是没有这个tools.jar的,因此需要我们手动指定一下。
更改方法:
1.在不改变系统中的jdk和jre的目录内容的条件下,可以这样做:在Eclipse中,window->Preferenced->Java->Installed JREs,这里面就是Eclipse内置的默认的代码运行环境。ant无法执行就是因为这里面没有tools.jar包。现在,选中这个jre,点“Edit”,进入后点击“Add External JARs”,选中JAVA_HOME/lib/tools.jar,然后点“Finish”,点OK。现在就可以运行了。
2.当然也可以将tools.jar包从JAVA_HOME/lib下拷贝到Eclipse默认调用的jre/lib下,然后再按上面的方法添加到里面。
第二种方法:也是比较简单且有效的方法:直接将tools.jar包作为第三方包,直接导入到Eclipse的工程中,并且build path。这样便不会再出现以上的问题了。
归根结底,主要是能够使ant访问到tools.jar包。
如果什么问题,请指出,大家互相交流。
0 0
- 在Eclipse中使用Java代码调用ant出现的异常
- Android 在Eclipse中使用Ant Build构建项目时出现的"crunch"
- Android 在Eclipse中使用Ant Build构建项目时出现的"crunch"
- 在Eclipse中使用Ant
- 在Eclipse中使用Ant
- 记一次在JAVA中客户端使用axis调用webservice服务端出现的异常:Unmarshalling Error: For input string: ""
- 在Java中使用OpenCV (maven,ant,eclipse)
- 在Eclipse的Web项目中java里面使用ant进行数字签名步骤详解
- Java 代码调用ANT
- Java 代码调用ANT
- Java 代码调用ANT
- 在使用eclipse从svn中导入代码出现的奇葩的问题
- 1.4 在Ant中编译Java代码
- 在代码中连接LocalDB出现异常
- 在java中CreateProcess出现的异常的处理(备忘)
- 在java中CreateProcess出现的异常的处理(备忘)
- Eclipse中使用Ant
- Eclipse中使用ANT
- Java中的IO(预留)
- [ACM] POJ 1035 Spell checker (单词查找,删除替换增加任何一个字母)
- Java 生成新图片处理类
- 多线程 概述
- 内存使用情况
- 在Eclipse中使用Java代码调用ant出现的异常
- ios 推送
- 开启线程
- android Touch事件传递自己理解
- 相机闪存卡数据恢复方法/数码相机误删照片恢复详解
- POJ 3566
- No.10 Xcode(5.1.x) UITabBarController
- Hdu 1043
- POJ 1009 Edge Detection(模拟)