知识大全 Java调用Eclipse的编译器JDT

Posted 工程

篇首语:千淘万漉虽辛苦,吹尽狂沙始到金。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java调用Eclipse的编译器JDT相关的知识,希望对你有一定的参考价值。

Java调用Eclipse的编译器JDT  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  想给项目做一个Nightly build 项目特点如下

   使用 Eclipse开发的java和GWT混合项目

   目前有 多个工程

   项目处于初期 很多部分尚未稳定 因此是工程是工程间依赖工程 没有引用编译好的jar包

   工程主要分为前台clt 公共模块mon 和服务器模块svr 例如有一个mon 一定有A clt和A svr依赖于mon 但clt和svr间不相互依赖

  (这是我们项目的编译过程的特殊逻辑)

  以下是选定的技术路线

  因为编译带有特殊的逻辑 所以使用方便编程的java 而非纯ant脚本

  不想自己整理工程的编译顺序 太多 麻烦 所以使用了dom j读取eclipse工程配置信息

  不用ant脚本 可以使用Java程序调用Ant API

  由于javac对模板的不友好 所以使用jdt

  例如以下的代码

  <! <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />;br/ /><br/ /> >package  demo server;

  import  extjs gxt ui client data BaseModel;

  public   class  TestA  extends  BaseModel

  @Override

  public   < X >  X get(String property)

  return   super get(property);

  

  

  使用javac编译 就会出现

  无法确定 <X>X 的类型参数 对于上限为 X java lang Object 的类型变量 X 不存在唯一最大实例

  虽然搜索了以下 说只要返回值强制转换一下就ok 即return (X)super get(property);

  但这样的代码也比较多 明明在eclipse编译通过的 在javac就不行 所以g了一下 才知道 eclipse有自己的编译器(?不太确认javac和jdt的关系) 叫jdt

  首先要从Eclipse中 抽取出一个JDT的包 在Eclipse/plugin目录下 找到一个re _ v_ _R x jar (版本社么的没有关系) 用winrar解压出里面的一个jdtCompilerAdapter jar包 然后从工程中引用它

  顺便把

  piler tool_ v_ _R x jar

  re_ v_ _R x jar

   eclipse jdt debug ui_ v _r jar

  这几个包也从eclipse/plugin中引用到项目里 ——为什么要单独解压jdtCompilerAdapter jar 我不太清楚啊

  然后 由于要调用ant 所以从apache上的ant项目中下载 用到两个包

  ant jar

  ant launcher jar

  使用以下代码 调用ant

  <! <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />;br/ /><br/ /> >package  thss platform util mrobuild;

  import  java io File;

  import  apache tools ant Project;

  import  apache tools ant taskdefs Javac;

  import  apache tools ant taskdefs Javac ImplementationSpecificArgument;

  import  apache tools ant types Path;

  public   class  JavaBuilder

  public  JavaBuilder()

  

  public   void  execute(Path classPath File output)

  Project currentProject  =   new  Project();

  //  填写工程的绝对目录 这样后面可以使用相对目录

  currentProject setBaseDir( new  File( 这里是工程的绝对目录 ));

  Javac pileJava  =   new  Javac();

  pileJava setProject(currentProject);

  //  调用jdt编译器

  pileJava setCompiler( re JDTCompilerAdapter );

  pileJava setClasspath(classPath);

  pileJava setEncoding( UTF );

  //  填写相对目录src

  pileJava setSrcdir( new  Path(currentProject   src ));

  //  编译后的结果 class输出到哪里

  pileJava setDestdir(output);

  pileJava setTarget( );

  pileJava setSource( );

  pileJava setNowarn( true );

  pileJava setDebug( true );

  pileJava setDebugLevel( lines source );

  //  javac需要这段 换成了jdt不知道要不要了

  ImplementationSpecificArgument arg  =  pileJava createCompilerArg();

  arg setLine(   Xlint );

  pileJava execute();

  

  

cha138/Article/program/Java/hx/201311/26049

相关参考

知识大全 eclipse忽略svn目录文件编译

  使用eclipse进行开发时在编译JAVA代码时的原则是对于源代码目录中的所有*java文件编译成同名的*class文件而对于如abcjava中的内部类C编译成abc$Cclass对于所有非jav

知识大全 精通Eclipse V3.4,第2部分: JDT

精通EclipseV3.4,第2部分:JDT  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要

知识大全 SE6调用编译器的两种方法[2]

Java进阶:SE6调用编译器的两种方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  三

知识大全 SE6调用编译器的两种方法[1]

Java进阶:SE6调用编译器的两种方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 在SE6中调用编译器的两种方法[4]

Java进阶:在SE6中调用编译器的两种方法[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 在SE6中调用编译器的两种方法[3]

Java进阶:在SE6中调用编译器的两种方法[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 在SE6中调用编译器的两种方法[2]

Java进阶:在SE6中调用编译器的两种方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 在SE6中调用编译器的两种方法[1]

Java进阶:在SE6中调用编译器的两种方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用eclipse调用.net web service

  以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs

知识大全 利用Eclipse编译AspectJ项目

利用Eclipse编译AspectJ项目  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要:本文告