Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 了解OpenDeclartion功能(f3)。如何在eclipse中调试openDeclaration_Java_Eclipse_Debugging_Eclipse Plugin - Fatal编程技术网

Java 了解OpenDeclartion功能(f3)。如何在eclipse中调试openDeclaration

Java 了解OpenDeclartion功能(f3)。如何在eclipse中调试openDeclaration,java,eclipse,debugging,eclipse-plugin,Java,Eclipse,Debugging,Eclipse Plugin,我正在尝试将openDeclaration函数添加到我自己的Eclipse插件编辑器中。到目前为止,我还没有真正理解f3功能是如何工作的(我读了一些关于超链接、openAction和compilationUnit.findDeclaringNode()),但我无法把这些部分放在一起并理解它是如何工作的 直到现在我还以为它是这样工作的: 解析代码时,读取的标记将添加到ast。层次结构级别为IJavaProject/IPackageFragmentRoot/IPackageFragment/ICom

我正在尝试将
openDeclaration
函数添加到我自己的Eclipse插件编辑器中。到目前为止,我还没有真正理解f3功能是如何工作的(我读了一些关于超链接、
openAction
compilationUnit.findDeclaringNode()
),但我无法把这些部分放在一起并理解它是如何工作的

直到现在我还以为它是这样工作的: 解析代码时,读取的标记将添加到ast。层次结构级别为
IJavaProject/IPackageFragmentRoot/IPackageFragment/ICompilationUnit/{IType/IField/IMethod}
使用jdt可以使用此ast。每个Java文件都用一个编译单元表示。如果我按f3键,将启动一个
ActionHandler
,它将获取我此时悬停的
IjavaElement

现在我的编辑器插件中有
IJavaElement
,但我不知道如何跳转到与编译单元中的声明相关联的相应类型/方法。 我不知道如果声明节点不在同一个编译单元中会发生什么,比如它是基本类型(比如字符串或整数)

如果一切都更清楚的话,也许我可以按照默认Java编辑器的方式来完成这项任务。
我如何将这些部分整合起来,或者如何调试功能?

您可以阅读实现开放声明的
org.eclipse.jdt.ui.actions.OpenAction
的源代码。谢谢,它帮助我进一步了解。你知道我可以在哪里读到更多关于一切都在一起工作的资料吗?@greg-449我看到OpenAction和SelectionDispatchAction被描述为“不打算被客户端子类化”。为了在非Java插件中实现F3功能,应该对哪个类进行子类化(或者实现哪个接口)?@Eyal操作现在不推荐使用。使用命令、处理程序和键绑定创建新的code@greg-449是的,我在文档中读到了,但是我还没有找到哪个命令代表F3。你知道一个有F3命令的插件吗?我可以举个例子看看?我知道JDT不应该具有代表性