Java 日食中的游客
我正在学习如何为项目创建一个ASTVisitor,所以我开始使用Eclipse,它有一个全面的API 我已从本网站下载了打包的示例项目: 但是我意识到这些代码没有main()方法,但我能够运行这个程序!有人知道为什么吗?[qn 1] 然而,这些代码似乎太过复杂,无法使用,而且执行基本操作的说明也不是很清楚 所以我也继续看这个: 有人知道我如何编写一个main方法来调用execute(ExecutionEvent)吗是否提供一个示例代码段?[qn 2] 我不知道如何使用ExecutionEventJava 日食中的游客,java,eclipse,abstract-syntax-tree,visitor,Java,Eclipse,Abstract Syntax Tree,Visitor,我正在学习如何为项目创建一个ASTVisitor,所以我开始使用Eclipse,它有一个全面的API 我已从本网站下载了打包的示例项目: 但是我意识到这些代码没有main()方法,但我能够运行这个程序!有人知道为什么吗?[qn 1] 然而,这些代码似乎太过复杂,无法使用,而且执行基本操作的说明也不是很清楚 所以我也继续看这个: 有人知道我如何编写一个main方法来调用execute(ExecutionEvent)吗是否提供一个示例代码段?[qn 2] 我不知道如何使用ExecutionEve
我一直在获取“线程中的异常”main“java.lang.IllegalStateException:Workspace is closed”。即使我删除了执行事件的参数(也需要删除扩展部分)或使用了main中的部分代码。它似乎与
IWorkspaceRoot=ResourcesPlugin.getWorkspace().getRoot()中的“ResourcesPlugin”有关。有人知道为什么吗?[qn 3]您的项目应该是一个Eclipse插件项目,而不是一个带有main()方法的简单Java项目
这里有一个建议:看看这个工具。这是一个用来检查AST的工具。使用源代码,运行它,调试它,设置断点,修改代码,看看它是如何工作的
另外,确保您拥有所有JDT源代码。ASTVisitor有很多例子(请确保不要使用任何内部方法) 您的项目应该是一个Eclipse插件项目,而不是一个带有main()方法的简单Java项目
这里有一个建议:看看这个工具。这是一个用来检查AST的工具。使用源代码,运行它,调试它,设置断点,修改代码,看看它是如何工作的
另外,确保您拥有所有JDT源代码。ASTVisitor有很多例子(请确保不要使用任何内部方法) 我没有足够的信心明确地说您需要编写一个插件来使用ASTVisitor,但这是最简单的方法。找到一些简单的插件代码,创建一个按钮或一些你可以按下并开始运行你的代码。插件开发环境中有一个示例插件可以做到这一点(如果没有,请下载相应版本的Eclipse)
创建插件项目:
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
要创建插件项目,请访问包资源管理器并右键单击或打开“文件”菜单。选择顶部项目“新建…”将打开一个子菜单,您可以在其中选择“其他…”。
此时将打开“新建”对话框。打开文件夹“插件开发”并选择“插件项目”
单击“下一步”几次,输入必要的信息,直到到达以下页面:
这里的第一个示例“Hello World”在您的二级eclipse中创建了一个菜单。运行第二级eclipse,转到新项目的plugin.xml,转到选项卡overview
您将看到如下页面:
单击“启动一个eclipse应用程序”,另一个eclipse将在新插件启动并运行的情况下启动。点击第二级eclipse中的sample action按钮,查看一些甜美的动作
现在,您可以继续使用所需的任何代码替换操作代码。在本例中,创建并启动访问操作
创建ASTVisitor:
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
创建一个扩展ASTVisitor的类,以便您可以添加自己的代码
- preVisit(ASTNode)对AST进行前序遍历
- postVisit(ASTNode)对AST进行后序遍历
- 访问(…)检查特定节点
向访问者添加类似的内容:
private void startVisit(IFile file) {
ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setSource(icu);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(this);
}
现在将代码添加到创建访问者并调用此函数的按钮按下操作:
MyVisitor mv = new MyVisitor();
mv.startVisit(...);
获取IFile(这里您需要是一个插件,否则您将得到您报告的错误):
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
替换省略号对应的项目和文件名(字符串)
现在,每次您按下按钮,文件都会被访问,您输入的代码将在适当的时间执行(在访问前或访问后打印每个ASTNode是非常有见地的)。我没有足够的信心明确地说您需要编写一个插件来使用ASTVisitor,但这是最简单的方法。找到一些简单的插件代码,创建一个按钮或一些你可以按下并开始运行你的代码。插件开发环境中有一个示例插件可以做到这一点(如果没有,请下载相应版本的Eclipse)
创建插件项目:
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
要创建插件项目,请访问包资源管理器并右键单击或打开“文件”菜单。选择顶部项目“新建…”将打开一个子菜单,您可以在其中选择“其他…”。
此时将打开“新建”对话框。打开文件夹“插件开发”并选择“插件项目”
单击“下一步”几次,输入必要的信息,直到到达以下页面:
这里的第一个示例“Hello World”在您的二级eclipse中创建了一个菜单。运行第二级eclipse,转到新项目的plugin.xml,转到选项卡overview
您将看到如下页面:
单击“启动一个eclipse应用程序”,另一个eclipse将在新插件启动并运行的情况下启动。点击第二级eclipse中的sample action按钮,查看一些甜美的动作
现在,您可以继续使用所需的任何代码替换操作代码。在本例中,创建并启动访问操作
创建ASTVisitor:
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
创建一个扩展ASTVisitor的类,以便您可以添加自己的代码
- preVisit(ASTNode)对AST进行前序遍历
- postVisit(ASTNode)对AST进行后序遍历
- 访问(…)检查特定节点
向访问者添加类似的内容: