JDT的resolveBinding()问题的解决方案
来源:互联网 发布:淘宝350模板 编辑:程序博客网 时间:2024/06/05 08:57
今天在用JDT的DOM API分析Java源代码时遇到如下问题:
当用户在JDT Editor里面编辑代码时,如果需要JDT进行参数推荐,则会触发我们自己的代码。而此时,不知何故,我们的ASTVisitor的代码中无法resolve一个TypeDeclaration。即调用TypeDeclaration.resolveBinding()的返回值为null。进而导致一个NPE。
后来老杨等人找到这么一段API文档(是ASTParser.setResolveBindings()的):
...
When source is supplied by setSource(char[]), the location must be established explicitly by setting an environment usingsetProject(IJavaProject) or setEnvironment(String[], String[], String[], boolean) and a unit name setUnitName(String). Note that the compiler options that affect doc comment checking may also affect whether any bindings are resolved for nodes within doc comments.
...
然后根据此文档的指示,使用了如下代码,就解决了:
当用户在JDT Editor里面编辑代码时,如果需要JDT进行参数推荐,则会触发我们自己的代码。而此时,不知何故,我们的ASTVisitor的代码中无法resolve一个TypeDeclaration。即调用TypeDeclaration.resolveBinding()的返回值为null。进而导致一个NPE。
后来老杨等人找到这么一段API文档(是ASTParser.setResolveBindings()的):
...
When source is supplied by setSource(char[]), the location must be established explicitly by setting an environment usingsetProject(IJavaProject) or setEnvironment(String[], String[], String[], boolean) and a unit name setUnitName(String). Note that the compiler options that affect doc comment checking may also affect whether any bindings are resolved for nodes within doc comments.
...
然后根据此文档的指示,使用了如下代码,就解决了:
- ASTParser parser = ASTParser.newParser(AST.JLS3);
- parser.setSource(srcString.toCharArray());
- parser.setProject(icu.getJavaProject());
- IPath path = icu.getPath();
- parser.setUnitName(path.toString());
- parser.setResolveBindings(true);
- parser.setStatementsRecovery(true);
- completeCU = (CompilationUnit) parser.createAST(null);
0 0
- JDT的resolveBinding()问题的解决方案
- eclipse的jdt简介
- Eclipse-JDT的使用
- 关于JDT的ASTParser解析
- Eclipse JDT的Index机制
- 怎样纠正eclipse3.11安装JDT中文包后打不开class文件的问题
- 调用JDT需要涉及到的类
- 基于 JDT 的 JAR 源代码搜索
- JDT学习之编译单元的类型
- JDT提供的工具类JavaConventions
- JDT:类型对话框的使用(FilteredTypesSelectionDialog)
- 调用eclipse的JDT编译java源代码
- 用eclipse的jdt来编译class
- 使用Ant和org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader打包可运行Jar后找不到main的解决方案
- Atitit org.eclipse.jdt 的ast 架构 Eclipse JDT API spec
- eclipse的JDT的hover是如何显示出来的
- 抽样问题的解决方案
- Josephus问题的解决方案
- Android 使用URLConnection提交请求
- Java程序性能调优的基本知识和JDK调优
- 安卓 焦点获取和view放大问题(机顶盒应用)
- do...while(0)的妙用
- 网络编程socket之connect函数
- JDT的resolveBinding()问题的解决方案
- Android5.0系统WIFI状态如何向应用程序通知
- Android应用开发相关下载资源
- python输出htmltestrunner中文乱码如何解决
- 不止是产品经理(四)----开春产品笔记
- 总结分享十大iOS开发者最喜爱的库
- 使用PackageInstaller安装app流程学习小结
- Integer
- Linux开发已知进程名字获取PID号(C语言)