ASTParser中binding没有成功绑定,导致resolveTypeBinding()返回null

AVEVA PDMS 二次开发之PML实战:从宏到自定义窗体的效率提升 本文详细介绍了AVEVA PDMS二次开发中PML语言的应用,从基础宏编写到高级窗体开发,全面提升工程设计效率。通过实战案例展示如何利用PML实现批量操作、流程自动化和交互优化,帮助工程师快速掌握这一强大工具。 阅读详情
package Ast;

import java.io.BufferedInputStream;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.dom.AST;  
import org.eclipse.jdt.core.dom.ASTParser;  
import org.eclipse.jdt.core.dom.CompilationUnit;
  
public class JdtAstUtil {  
    /** 
    * get compilation unit of source code 
    * @param javaFilePath  
    * @return CompilationUnit 
    */  
    public static CompilationUnit getCompilationUnit(String javaFilePath){  
        byte[] input = null;  
        try {  
            BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(javaFilePath));  
            input = new byte[bufferedInputStream.available()];  
                bufferedInputStream.read(input);  
                bufferedInputStream.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        
        ASTParser astParser = ASTParser.newParser(AST.JLS8);  
        astParser.setResolveBindings(true);         //打开绑定
        astParser.setSource(new String(input).toCharArray());  
        astParser.setKind(ASTParser.K_COMPILATION_UNIT);  //K_COMPILATION_UNIT:编译单元,即一个Java文件,是所需解析的代码的类型
        //最重要的两步
        astParser.setEnvironment(null, null, null, true);  //setEnvironment(classpath,sourcepath,encoding,true)
        astParser.setUnitName("example.java");   //参数随意   
        
        CompilationUnit result = (CompilationUnit) (astParser.createAST(null));  
        return result;  
    }  
}  

在使用setSource(char [])方法的时候,后面要加上setEnvironment和setUnitName方法。setEnvironment方法单独使用是可以加入具体参数,但是setUnitName方法也使用的时候,参数只能用(null, null, null, true)才跑的出结果。

第28节:cesium 加载高程数据(含源码+视频) cesium 加载高程(地形)数据 阅读详情

相关推荐

IFRS 9与CECL对比解析:跨国企业财务必须掌握的两种信用损失模型

本文深度解析IFRS 9与CECL两种信用损失模型的差异,帮助跨国企业应对财务合规挑战。从基础架构、数据治理到监管策略,详细对比三阶段模型与单一阶段模型的核心区别,并提供实施双轨制的实务建议,助力企业优化资本管理和税务筹划。

3c4x5z6v7b的博客 669

cxf报错No binding factory for namespace http://schemas.xmlsoap.org/soap/ registered问题解决

使用cxf实现的webservice在eclipse中运行时无问题,打包成jar后控制台运行报错(也是我上一篇文章里介绍的那个程序遗留下来的问题) 十月 30, 2020 3:12:42 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromClass 信息: Creating Service {http://test/}Dny from class test.Dny Exception i

qq_32539053的博客 2307

html python mysql交互_干货!Python与MySQL数据库的交互实战

安装PyMySQL库如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个库的安装很简单,直接使用pip install pymysql;假如这种方式还是安装不上,就用如下链接找一个合适的安装包,进行安装,这个就不细说了。https://www.lfd.uci.edu/~gohlke/pythonlibs/使用Python连接MySQL数据库1)六个常用的连接参数参数...

weixin_31043555的博客 1561

【开发Bug问题汇总】

开发bug汇总集合与解决方案分享,如有问题欢迎大家前来指点,谢谢!

BridgeCloud的博客 1287

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7)

weixin_44312889的博客 6310

手把手入门YOLO到改进优化教程专栏介绍与说明——列表目录查阅(持续更新)

手把手入门YOLO到改进优化教程专栏介绍与说明——列表目录查阅(持续更新)

嵌入式阿齐Archie 2万+

Could not resolve all dependencies for configuration ‘:classpath‘

Could not resolve all dependencies for configuration ':classpath'

m0_69097184的博客 4326

ShaderJoy —— 简单又神奇的 “合体” 函数【GLSL】

smin 函数 它实际上有两种常见的实现方式 多项式 指数 多项式 smin 函数图 其对应的代码为 float smin( float a, float b ) { // 多项式 const float k = 0.5; float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); return mix(b, a, h) - k * h * (1.0 - h); } 从上图中我们可以很明显的看出有两处不连...

ShaderJoy 的兴趣技术杂货铺 1858

编写基于maven的IDEA插件,实现根据现有代码生成流程图

我们需要使用AST(抽象语法树)来分析Java源代码,然后生成流程图。在这个插件中,我们使用ANTLR(ANother Tool for Language Recognition)生成AST。类来实现生成流程图的逻辑。我们需要实现一个ANTLR的访问者来遍历AST,然后生成流程图。然后,我们需要使用ANTLR生成Java语法分析器。首先,我们需要创建一个Maven项目来开发这个插件。在项目根目录下创建一个。接下来,我们需要创建一个。

u012632105的博客 1317

(五)深入理解Bluez协议栈之“GATT Server Profile”

上一篇介绍Bluez协议栈的了GAP Profile的实现,本章节我们继续介绍GATT Profile的实现,参考的程序是Peripheral。通过阅读它的实现代码可以发现,它广播部分是通过mgmt来实现的,然后在初始化完成之后,创建了一个L2CAP类型的socket,来负责实现GATT Server的逻辑。

1144

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

idea插件开发-自定义语言03-Parse and PSI

在 IntelliJ 平台中解析文件是一个两步过程:首先,构建抽象语法树 (AST),定义程序的结构。AST 节点由 IDE 在内部创建,具体是由类ASTNode类来创建的。每个 AST 节点都有一个关联的元素类弄IElementType实例,元素类型由语言插件定义。AST 树的顶级节点需要有一个特殊的元素类型IFileElementType。AST 节点直接映射到基础文档中的文本范围。AST 的最底部节点匹配词法分析器返回的单个标记,而更高级别的节点匹配多个标记片段。在 AST 树的节点上执行的操

编程是一门实践技术 1310

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

cxf soap返回_Java CXF3 WebService发布消息格式为SOAP1.2的服务

在以前的文章中介绍过了5种发布WebService服务的方法,如果不了解请查看:http://www.what21.com/sys/view/java_webservice_1476079238926.htmlhttp://www.what21.com/sys/view/java_webservice_1476103611930.html这些发布的服务消息格式都为SOAP1.1,现在我们需要使用S...

weixin_36213756的博客 558

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Node Sass could not find a binding for your current environment 解决办法

尝试了npm installnode-sass 和 yarn installnode-sass都没成功,猜测可能是的网络问题, 使用 cnpm installnode-sass 一次成功

acaointerbill的博客 803

访问者模式(Visitor)

设计模式系列 Visitor 访问者模式——对象行为模式 1.意图 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前拐下定义作用于这些元素的新操作。 2.适用性 在下列情况下使用Visitor模式: 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而...

行走 1072

AST基础知识|Scope和Binding常用方法及属性总结

}......}在本文中,选出部分常用的属性和方法供大家参考,更多的知识请自行学习源码。表示当前作用域下的所有node,参考上面的 this.block = node;输出当前每个变量的作用域信息。调用后直接打印,不需要加打印函数重构scope,在某种情况下会报错,不过还是建议在每一个插件的最后一行加上。修改当前作用域下的的指定的变量名,oldname、newname表示替换前后的变量名,为字符串。

paxiaochong001的博客 1341

AST学习笔记

AST学习笔记基础部分1.evaluate()的作用 基础部分 1.evaluate()的作用 针对作用域和引用,直接依据引用来计算出执行结果。 var a = 123 + '2sdasda31231'; var b = a; ↓ var a = "1232sdasda31231"; var b = "1232sdasda31231"; visitor = { "BinaryExpression|Identifier"(path){ const {confiden

Xzike的博客 1869

探索 Eclipse 的 ASTParser

探索 Eclipse 的 ASTParser如何使用这种解析器生成代码简介: 如果曾经编写过处理代码的应用程序,就会知道事情可能变得非常复杂,尤其在使用像 Java™ 这样复杂的语言时。不过对于那些使用 Eclipse 的人来说,有一个好消息:可以利用 Java Development Tooling (JDT) 和 ASTParser。本文就说明如何做。E

我的JAVA快乐生活 2万+

【Eclipse AST】AST的获取与访问

从本文开始将由浅入深向大家介绍AST的使用。Eclipse中的Eclipse JDT提供了一组访问和操作Java源代码的API,Eclipse AST是其中一个重要组成部分,它提供了AST、ASTParser、ASTNode、ASTVisitor等类,通过这些类可以获取、创建、访问和修改抽象语法树。

刘伟技术博客 3万+

unit类型是什么?_ASTParser到底是个什么鬼?

# Eclipse JDT 能提供什么帮助Eclipse JDT 提供了操纵 Java 源代码、检测错误、执行编译和启动程序的的 API。本文将说明如何使用 ASTParser 从头创建一个 Java 类,同时介绍如何使用 JDT 服务编译生成的代码。Eclipse JDT 有自己的文档对象模型(DOM),其思想和众所周知的 XML DOM 是一致的:抽象的语法树(AST)。Eclips...

weixin_39905037的博客 367

UE4写第一个独立的C++插件_动画合并和位置衔接

先写这些,后面再补充

ale26的专栏 1376

JDT的resolveBinding()问题的解决方案

今天在用JDT的DOM API分析Java源代码时遇到如下问题:  当用户在JDT Editor里面编辑代码时,如果需要JDT进行参数推荐,则会触发我们自己的代码。而此时,不知何故,我们的ASTVisitor的代码中无法resolve一个TypeDeclaration。即调用TypeDeclaration.resolveBinding()的返回值为null。进而导致一个NPE。  后来

miao5014的专栏 1341

如何开启Eclipse JDT ASTParser的ResolveBindings功能

抽象语法树AST(Abstract Syntax Tree)是对程序代码的结构化表示,是对代码进行词法分析、语法分析后得到的产物。Eclipse作为开源的Java IDE就提供了一个库来帮助我们达到将Java源代码结构化为AST目的。本文将介绍如何开启Eclipse JDT ASTParser的ResolveBindings功能。

一个测试工程师的代码世界 3189

Java抽象语法树AST浅析与使用

Java抽象语法树AST浅析与使用概述作用Java项目模型对象AST模型对象AST试图具体使用 概述 抽象语法树(Abstract Syntax Tree, AST)是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的结构,树的每个节点ASTNode都表示源码中的一个结构。Eclipse java的开发工具(JDT)提供了Java源代码的抽象语法树AST。抽象语法树就像是java文件的do...

peng425的博客 3万+

【MyBatis】常见错误记录

错误类型一: 错误提示:org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'values' i

Awsmsniper的博客 3万+
上一篇: ubuntu下运行项目报错:Invalid layout of java.lang.Thread at name
下一篇: Towards Improved Testing for Deep Learning [ICSE 2019]——阅读笔记
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值