知识大全 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进行开发时在编译JAVA代码时的原则是对于源代码目录中的所有*java文件编译成同名的*class文件而对于如abcjava中的内部类C编译成abc$Cclass对于所有非jav
精通EclipseV3.4,第2部分:JDT 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要
Java进阶:SE6调用编译器的两种方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 三
Java进阶:SE6调用编译器的两种方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
Java进阶:在SE6中调用编译器的两种方法[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java进阶:在SE6中调用编译器的两种方法[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java进阶:在SE6中调用编译器的两种方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java进阶:在SE6中调用编译器的两种方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 使用eclipse调用.net web service
以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs
利用Eclipse编译AspectJ项目 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要:本文告