eclipse的jdt简介
JDT(java development tooling)是Eclipse提供的一组API。其功能引用其官方文档上的说法:
Programmatically manipulate Java resources, such as creating projects, generating Java source code, performing builds, or detecting problems in code. Programmatically launch a Java program from the platform. Provide a new type of VM launcher to support a new family of Java runtimes. Add new functions and extensions to the Java IDE itself. 总之,提供了一系列强大的API供我们操作Java代码。
JDT实际上是将Java代码构建成一个基于DOM结构的抽象语法树AST(Abstract Syntax Tree )。代码中的每个部分都对应一个ASTNode,许多的ASTNode就构成了这个抽象的语法树。Java Class一般对应Compilation Unit node,该节点也是AST树上的顶点。创建一个AST如下:
java 代码
ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit unit = (CompilationUnit) parser.createAST(null); unit.recordModifications(); AST ast = unit.getAST();
其中createAST,当parse需要较长时间时,可以采用createAST(new NullProgressMonitor()),否则直接传null即可。
recordModifications()用于记录节点的变动,比如修改、删除等,当需要对AST树进行变动操作时,必须要预先调用这个方法。
比较重要的是:一个AST树上的所有节点必须都属于该AST。不允许直接将其他AST树上的节点添加该AST树上。否则会抛出java.lang.IllegalArgumentException异常。须使用ASTNode.copySubtree(AST target, ASTNode node)返回一个目标树的深度拷贝,才能进行添加操作。例如: java 代码ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit targetRoot= (CompilationUnit) parser.createAST(null); targetRoot.recordModifications(); parser.setSource("class T{}”".toCharArray()); CompilationUnit srcRoot= (CompilationUnit) parser.createAST(null); //这是非法操作,两者的AST源不一样 targetRoot.types().add(srcRoot.types().get(0)); //这是合法操作 targetRoot.types().add(ASTNode.copySubtree( targetRoot.getAST(), (ASTNode) srcRoot.types().get(0))); //这是合法操作 targetRoot.types().add(targetRoot.getAST().newTypeDeclaration());
eclipse的jdt简介相关推荐
- Eclipse入门-- Eclipse的使用简介及插件开发
Eclipse入门-- Eclipse的使用简介及插件开发 内容: 一.Eclipse简介 1.文件存放 2.Eclipse开发环境 3.编译与运行 4.版本管理 5.使用插件 二.开发E ...
- Eclipse开发工具--简介
简介 Eclipse是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是提供了一个基础的底层支持,而后针对于不同的编程语言都会提供有相应的插件支持. Eclipse最初是由IBM公司 ...
- eclipse分级_Eclipse 简介
Eclipse 简介 Eclipse 是流行的 Java 集成开发环境 (IDE) . 同时它还可以作为其它语言的 开发环境 (例如 C++ 和 Ruby ) 并且作为开发桌面或服务器应用程序的富客户 ...
- IDE之EcliPse:EcliPse软件的简介、安装、入门、使用方法之详细攻略
IDE之EcliPse:EcliPse软件的简介.安装.入门.使用方法之详细攻略 目录 EcliPse软件的简介 Eclipse特点 EcliPse软件的安装 EcliPse软件的入门 1.快捷键集合
- 使用maven编译打包用javac还是eclipse的jdt的问题
最近把一个旧项目改为maven项目,发现一个问题, 旧项目用eclipse打包编译没问题, 但是改为maven项目使用maven打包就会出现一堆错误 百度了一下发现maven使用的是javac编译相比 ...
- [转载]Eclipse开发工具简介
Eclipse开发工具简介 Eclipse是开放源代码的项目,你可以到www.eclipse.org去 免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stabl ...
- maven项目 报错 Lifecycle mapping quot;org.eclipse.m2e.jdt.JarLifecycleMappingquot; is not available.
最近发现从svn检出的项目转成Maven项目之后会经常报错,各种奇葩错... 最常见的是项目上面出现红色叹号啦,jar包丢失的问题,还算比较好解决了. 这次遇到了个 Lifecycle mapping ...
- 解决sts 导入maven工程 报 Lifecycle mapping org.eclipse.m2e.jdt.JarLifecycleMapping is not available.
前段时间 开始尝试spring boot,无奈myeclipse不支持jdk7 .只好换sts 但是在用sts 导入 导入maven工程 pom.xml上,报 Lifecycle mapping & ...
- Eclipse插件开发JDT组件介绍
介绍 JDT(Java Development Tools)是Eclipse中有关Java开发的一个组件,该组件中封装了大多数Java开发中的功能,也可以说它是Eclipse支持Java开发的核心组件 ...
最新文章
- 中国智能语音行业研究
- RedHat Linux网络配置过程笔记
- 银行营业网点管理系统——Servlet包(CityAreaServlet )
- 怎么在uefi解锁磁盘_系统重装时,如何秒判Windows启动是UEFI/Legacy?3步就够了!...
- 【Centos7】安装memcached
- 2021吉林高考26日几点可以查询成绩,2021吉林高考成绩查分时间及入口
- DBCacheServer升级
- 明微电子发布2021年三季度财报
- python 近期用到的基础知识汇总(八)
- Uber无人车安全员之困:这是一份机械、枯燥、影响心理的工作
- UltraISO(制作U盘ISO启动镜像)制作U盘启动盘
- esp32获取网络时间
- 中国矢量地图shp文件(带审图号)
- ARM-linux开发板网线连接电脑访问外网
- Python 根据AIC准则定义向前逐步回归进行变量筛选(二)
- 2022年,前端网课分析
- java游戏猿人时代_猿人时代游戏下载-猿人时代游戏(附攻略)正版下载v1.0.0-第五驱动...
- 如何登陆FTP服务器下载文件
- 无尽神域服务器维护,无尽神域辅助介绍_脚本功能大全
- mysql数据库date_format函数格式化时间