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简介相关推荐

  1. Eclipse入门-- Eclipse的使用简介及插件开发

    Eclipse入门--  Eclipse的使用简介及插件开发 内容: 一.Eclipse简介  1.文件存放  2.Eclipse开发环境  3.编译与运行  4.版本管理  5.使用插件 二.开发E ...

  2. Eclipse开发工具--简介

    简介 Eclipse是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是提供了一个基础的底层支持,而后针对于不同的编程语言都会提供有相应的插件支持. Eclipse最初是由IBM公司 ...

  3. eclipse分级_Eclipse 简介

    Eclipse 简介 Eclipse 是流行的 Java 集成开发环境 (IDE) . 同时它还可以作为其它语言的 开发环境 (例如 C++ 和 Ruby ) 并且作为开发桌面或服务器应用程序的富客户 ...

  4. IDE之EcliPse:EcliPse软件的简介、安装、入门、使用方法之详细攻略

    IDE之EcliPse:EcliPse软件的简介.安装.入门.使用方法之详细攻略 目录 EcliPse软件的简介 Eclipse特点 EcliPse软件的安装 EcliPse软件的入门 1.快捷键集合

  5. 使用maven编译打包用javac还是eclipse的jdt的问题

    最近把一个旧项目改为maven项目,发现一个问题, 旧项目用eclipse打包编译没问题, 但是改为maven项目使用maven打包就会出现一堆错误 百度了一下发现maven使用的是javac编译相比 ...

  6. [转载]Eclipse开发工具简介

    Eclipse开发工具简介 Eclipse是开放源代码的项目,你可以到www.eclipse.org去 免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stabl ...

  7. maven项目 报错 Lifecycle mapping quot;org.eclipse.m2e.jdt.JarLifecycleMappingquot; is not available.

    最近发现从svn检出的项目转成Maven项目之后会经常报错,各种奇葩错... 最常见的是项目上面出现红色叹号啦,jar包丢失的问题,还算比较好解决了. 这次遇到了个 Lifecycle mapping ...

  8. 解决sts 导入maven工程 报 Lifecycle mapping org.eclipse.m2e.jdt.JarLifecycleMapping is not available.

    前段时间 开始尝试spring boot,无奈myeclipse不支持jdk7 .只好换sts 但是在用sts 导入 导入maven工程  pom.xml上,报 Lifecycle mapping & ...

  9. Eclipse插件开发JDT组件介绍

    介绍 JDT(Java Development Tools)是Eclipse中有关Java开发的一个组件,该组件中封装了大多数Java开发中的功能,也可以说它是Eclipse支持Java开发的核心组件 ...

最新文章

  1. 中国智能语音行业研究
  2. RedHat Linux网络配置过程笔记
  3. 银行营业网点管理系统——Servlet包(CityAreaServlet )
  4. 怎么在uefi解锁磁盘_系统重装时,如何秒判Windows启动是UEFI/Legacy?3步就够了!...
  5. 【Centos7】安装memcached
  6. 2021吉林高考26日几点可以查询成绩,2021吉林高考成绩查分时间及入口
  7. DBCacheServer升级
  8. 明微电子发布2021年三季度财报
  9. python 近期用到的基础知识汇总(八)
  10. Uber无人车安全员之困:这是一份机械、枯燥、影响心理的工作
  11. UltraISO(制作U盘ISO启动镜像)制作U盘启动盘
  12. esp32获取网络时间
  13. 中国矢量地图shp文件(带审图号)
  14. ARM-linux开发板网线连接电脑访问外网
  15. Python 根据AIC准则定义向前逐步回归进行变量筛选(二)
  16. 2022年,前端网课分析
  17. java游戏猿人时代_猿人时代游戏下载-猿人时代游戏(附攻略)正版下载v1.0.0-第五驱动...
  18. 如何登陆FTP服务器下载文件
  19. 无尽神域服务器维护,无尽神域辅助介绍_脚本功能大全
  20. mysql数据库date_format函数格式化时间

热门文章

  1. Arch Linux 硬盘引导-联网安装
  2. python 根据word生成ppt_未明学院:利用Python将Wordamp;PPT批量转成PDF
  3. 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建
  4. Java实现字典树 Trie
  5. layui 自定义表格行高,自适应
  6. 安全教育进社区:VR体验禁毒、防火、防盗骗
  7. 最美的公式:你也能懂的麦克斯韦方程组
  8. android手机联调,Android第三课 联调华为手机
  9. Windows未能启动,状态:0xc000014c的解决方法
  10. 微信小程序安卓密码加密的小黑点太大