- 浏览: 703981 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
羽翼的心动:
同意2楼的说法,我们公司之前一个项目用过pageoffice, ...
poi导出excel文件工具类 -
贝塔ZQ:
poi实现导出excel文件,蛮麻烦的,用pageoffice ...
poi导出excel文件工具类 -
aishiqiang:
为什么我的项目配置好证书后,每次使用jenkinst自动构建包 ...
关于使用https协议,cas认证PKIX path building failed错误解决方法 -
zhongmin2012:
谢谢分享,正在想看
AST解析java源文件相关jar包 -
mybestroy1108:
感谢分享!受益良多!
Jboss7 JMS demo
今天有个处理需要涉及到java源文件的解析,baidu、google搜索了下,知道 eclipse 的 AST 可以解析java源文件,做了测试,老是报出异常来,后来发现是相关jar包少了,以免各位朋友犯同样的错误,把用到的相关jar文件贴出来,附件就是这些jar文件。
org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar
org.eclipse.core.jobs_3.5.0.v20100515.jar
org.eclipse.core.resources_3.6.0.v20100526-0737.jar
org.eclipse.core.runtime_3.6.0.v20100505.jar
org.eclipse.equinox.common_3.6.0.v20100503.jar
org.eclipse.equinox.preferences_3.3.0.v20100503.jar
org.eclipse.jdt.core_3.6.0.v_A58.jar
org.eclipse.osgi_3.6.0.v20100517.jar
贴段相关代码:
org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar
org.eclipse.core.jobs_3.5.0.v20100515.jar
org.eclipse.core.resources_3.6.0.v20100526-0737.jar
org.eclipse.core.runtime_3.6.0.v20100505.jar
org.eclipse.equinox.common_3.6.0.v20100503.jar
org.eclipse.equinox.preferences_3.3.0.v20100503.jar
org.eclipse.jdt.core_3.6.0.v_A58.jar
org.eclipse.osgi_3.6.0.v20100517.jar
贴段相关代码:
import java.io.BufferedInputStream; import java.io.FileInputStream; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.CompilationUnit; /** * java源文件解析操作 * @author linym * @version 2010-08 */ public class JdtAst { private ASTParser astParser = ASTParser.newParser(AST.JLS3);//非常慢 /** * 获得java源文件的结构CompilationUnit * @param javaFilePath java文件的绝对路径 * @return CompilationUnit * @throws Exception */ public CompilationUnit getCompilationUnit(String javaFilePath) throws Exception { BufferedInputStream bufferedInputStream = new BufferedInputStream( new FileInputStream(javaFilePath)); byte[] input = new byte[bufferedInputStream.available()]; bufferedInputStream.read(input); bufferedInputStream.close(); this.astParser.setSource(new String(input).toCharArray()); /**/ CompilationUnit result = (CompilationUnit) (this.astParser.createAST(null));//很慢 return result; // List commentList = result.getCommentList(); // PackageDeclaration package1 = result.getPackage(); // List importList = result.imports(); // TypeDeclaration type = (TypeDeclaration) result.types().get(0); // FieldDeclaration[] fieldList = type.getFields(); // MethodDeclaration[] methodList = type.getMethods(); // Block method_block=methodList[1].getBody(); // TryStatement try_stmt=(TryStatement)method_block.statements().get(0); // ForStatement for_stmt=(ForStatement)try_stmt.getBody().statements().get(0); // ExpressionStatement express_stmt=(ExpressionStatement) ((Block)for_stmt.getBody()).statements().get(0); } }
- AST解析java源文件jar.rar (6.1 MB)
- 下载次数: 944
评论
5 楼
zhongmin2012
2016-05-28
谢谢分享,正在想看
4 楼
xuranpaoche
2013-07-04
不错,这两天需要做从java源文件反向工程到模型,正好用到!赞一个,希望作者再贴一些关于这个的注意事项或者是解释。
3 楼
夕星银梦
2012-05-23
报错啊
Exception in thread "main" java.lang.NoSuchFieldError: ignoreMethodBodies
at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:491)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1194)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:801)
at com.AST.JdtAst.getCompilationUnit(JdtAst.java:37)
at com.AST.JdtAst.main(JdtAst.java:54)
Exception in thread "main" java.lang.NoSuchFieldError: ignoreMethodBodies
at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:491)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1194)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:801)
at com.AST.JdtAst.getCompilationUnit(JdtAst.java:37)
at com.AST.JdtAst.main(JdtAst.java:54)
2 楼
Luminosite
2012-03-18
非常有用,谢谢。这八个文件果然是一个也不能少呀 搞了半天终于在plugins里把这几个文件都找到了。eclipse3.4提示里core.runtime.job.xxx竟然对应着core.job.xxx害的我半天没找到。
1 楼
sunlightas
2011-11-08
这个东西不错,哈哈
发表评论
-
linux 定时任务检查服务器是否正常
2014-02-28 22:21 4690通过curl命令判断url返回状态,以此来确定服务是否正常: ... -
poi导出excel文件工具类
2014-01-20 21:54 7254package m.utils.excel; imp ... -
课程设计--家庭财务管理系统
2012-04-14 16:58 1873记得第一次接触FLEX3是在毕业那一年,那时已经工作了大半年了 ... -
what's MINA?
2011-03-15 23:09 1361what's MINA? Apache MINA is a ... -
如何避免吧.svn文件编译到classes目录下
2011-01-25 09:47 0SVN是一个很好用的版本管理根据,但有一个很烦人的问题用ecl ... -
Java 异常处理及其应用
2010-10-26 12:46 1369Java 异常处理的忌讳引 ... -
使用ejb3配置开发SessionBean
2010-08-25 17:06 0Session Bean除了可以使用注释来发布外,也可以使用相 ... -
oracle clob类型处理
2010-08-23 11:13 0oracle clob类型处理 update clob字段放 ... -
ibatis 事务回滚操作
2010-08-11 13:54 0public StateBean deleteTask(M ... -
设计模式 之 “适配器模式[Adapter Pattern]”
2010-07-15 08:58 1111适配器模式[Adapter Pattern]类图 适配器模 ... -
帮朋友写的个关键字搜索器
2010-07-14 10:33 1419上礼拜一朋友让我帮忙写个小软件,需求大概是这样的:一个 ... -
实现xml到JavaBean的转换
2010-05-15 22:08 1662今天心血来潮,想实现xml到JavaBean的实现,baidu ... -
使用apache mail发送邮件错误解决办法
2010-04-28 16:29 8020今天在写发送邮件的程序时发现了以下两个些错误,贴出来跟大家分享 ... -
jbpm4部署异常
2010-03-15 10:11 0java.lang.LinkageError: loader ... -
spring 单元测试:java.lang.SecurityException
2010-03-05 20:06 0spring 单元测试抛出: java.lang.Secur ... -
eclipse安装spket插件(javascript工具)
2009-12-18 15:29 0eclipse安装spket插件(javascript工具) ... -
使用java excel api 导出数据到excel
2009-12-11 16:06 0找到一个java操作excel的api,连接地址http:// ... -
java int转byte[]
2009-11-05 13:39 0/** * int转byte[] * @pa ... -
附件下载
2009-10-28 14:35 0/** * 下载 * @param reques ... -
数值用千位分隔的方法
2009-10-24 08:57 1672将数值用“,”分隔或其它符号分隔的正则表达式如下: (?& ...
相关推荐
当我们谈论"Eclipse 使用 AST 简单解析抽象语语法树所需要的jar包"时,我们实际上是在讨论如何利用Eclipse的内建能力来解析Java源代码并构建抽象语法树(Abstract Syntax Tree,简称AST)。AST是一种数据结构,它以...
它解析源文件以构建具有强大分析和转换API的精心设计的AST。 它完全支持Java 11、12、13、14之前的现代Java版本。Spoon是Inria的官方开源项目,并且是开源联盟的成员。 文献资料 最新的官方文档位于 ,定期更新的...
一旦完成,就可以在自己的代码中引入JavaParser的API,例如解析Java源文件、遍历AST、修改代码等。 总的来说,JavaParser是一个强大的工具,它使开发者能够对Java代码进行深度操作,从而实现复杂的代码分析和自动化...
`.j2c.jar`文件很可能包含了这个转换工具的实现,可能是一个Java应用,通过Java的反射API和其他库来解析Java代码并生成相应的C++代码。使用该工具时,用户需要将Java源文件作为输入,输出将是相应的C++源文件。 ...
JavaParser是一组简单而轻巧的工具,用于通过解析Java代码来获取抽象语法树(AST),可以根据我们的要求对其进行进一步处理。 b)yUML- 这是一个免费的在线工具,可使用从UML Parser应用程序生成的URL。 URL包含特定...
用户在解压后,可能需要编译(如果使用的是.java源文件)或运行(如果提供的是可执行的.jar文件)来体验源代码转换的功能。 关于这个源代码转换程序的可能实现,通常会涉及以下几个关键知识点: 1. **语法解析**:...
- 首先,Javac读取源文件,解析其中的语法结构,包括类定义、方法定义、变量声明等。 - 解析完成后,Javac会进行语义分析,检查语法是否符合Java规范,如类型匹配、访问权限控制等。 - 通过词法分析和语法分析,...
- **ICompilationUnit**:表示Java源文件,是IPackageFragment的子类。 - **IPackageDeclaration**:表示编译单元中的包声明。 - **IImportContainer**和**IImportDeclaration**:分别表示导入声明的容器和单个...
JSEL库允许开发人员解析Java源文件,并将其转换为抽象语法树(AST,Abstract Syntax Tree)。通过这种方式,开发者可以轻松地遍历和分析源代码的结构,找出其中的类、方法、变量等语言元素。这在进行代码分析、自动...
- **解析**:编译器读取源代码并将其分解为抽象语法树(AST)。 - **类型检查**:检查变量、表达式和函数的类型,确保它们遵循Kotlin的类型系统规则。 - **语义分析**:验证代码的语义,如变量的初始化、函数调用...