如何在Eclipse之外的项目中使用Java Eclipse抽象语法树?(即不是eclipse插件)
我看到的所有Eclipse AST示例都是针对eclipse插件的。有没有一种方法(即示例)将月食AST用于非月食项目。
给定一个Java 1.5文件,以下是我用来执行此操作的代码。我对此很陌生,今天花了很多时间浏览并尝试使下面的代码正常工作。
public void processJavaFile(File file) {
String source = FileUtils.readFileToString(file);
Document document = new Document(source);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(document.get().toCharArray());
CompilationUnit unit = (CompilationUnit)parser.createAST(null);
unit.recordModifications();
// to get the imports from the file
List<ImportDeclaration> imports = unit.imports();
for (ImportDeclaration i : imports) {
System.out.println(i.getName().getFullyQualifiedName());
}
// to create a new import
AST ast = unit.getAST();
ImportDeclaration id = ast.newImportDeclaration();
String classToImport = "path.to.some.class";
id.setName(ast.newName(classToImport.split("\\.")));
unit.imports().add(id); // add import declaration at end
// to save the changed file
TextEdit edits = unit.rewrite(document, null);
edits.apply(document);
FileUtils.writeStringToFile(file, document.get());
// to iterate through methods
List<AbstractTypeDeclaration> types = unit.types();
for (AbstractTypeDeclaration type : types) {
if (type.getNodeType() == ASTNode.TYPE_DECLARATION) {
// Class def found
List<BodyDeclaration> bodies = type.bodyDeclarations();
for (BodyDeclaration body : bodies) {
if (body.getNodeType() == ASTNode.METHOD_DECLARATION) {
MethodDeclaration method = (MethodDeclaration)body;
System.out.println("name: " + method.getName().getFullyQualifiedName());
}
}
}
}
}
这需要以下库:
commons-io-1.4.jar
org.eclipse.jdt.core_xxxx.jar
org.eclipse.core.resources_xxxx.jar
org.eclipse.core.jobs_xxxx.jar
org.eclipse.core.runtime_xxxx.jar
org.eclipse.core.contenttype_xxxx.jar
org.eclipse.equinox.common_xxxx.jar
org.eclipse.equinox.preferences_xxxx.jar
org.eclipse.osgi_xxxx.jar
org.eclipse.text_xxxx.jar
我在使用Maven和'Eclipse Kepler Javaee'。我在'maven-compiler-plugin'中有这样的内容:
我想在一个Swing应用程序中使用一些JavaFX组件(特别是JFXPanel的HTML5呈现支持)。我的应用程序目前是在Eclipse4.3(Kepler)中设置的,我的机器上安装了最新的Java7 JDK。 这篇来自Oracle的教程建议您只需引用一个JavaFX类,它就可以在Swing应用程序中工作。所以我输入,但是Eclipse不能将其识别为有效的Java类。它确实可以识别其他Java7类
问题内容: 我想用Xtend语言编写Java类(仅仅是因为它的简洁性),然后将其编译回Java类,以便在Java项目中使用。就像咖啡脚本。我怎样才能做到这一点? 我尝试像创建新类一样创建Xtend文件,但是出现此错误: 在类路径上找不到必需的库包。 这将禁用智能感知(自动补全)。另外,即使我确实可以正常工作,如何将其编译为Java类? 问题答案: 尝试过同样的事情之后,我可以确认启用Xtend N
问题内容: 我正在将Maven与“ Eclipse Kepler JavaEE”结合使用。我在’maven-compiler-plugin’中有这样的内容: 每次我更改“ pom.xml”中的内容时,eclipse都会强制我执行“ Maven->更新项目”,然后将项目设置更改为使用JRE而不是JDK,并且某些maven构建停止工作。 我发现解决此问题的唯一方法是设置如何设置eclipse / m2
问题内容: 我有一个Java项目,我想开发它而不替换源代码。我想将代码链接到我的工作空间而不进行物理替换吗? 问题答案: 从中选择您要引用的 右键单击并转到(或按Ctrl-Enter)。 在中,您可以添加当前打开的另一个项目。 如果您要覆盖某个类,则可以在当前项目中对其进行复制,然后将其移至中的类路径中。
我可以将EclipseJava开发工具作为独立进程执行吗?我需要使用另一个程序的Eclipse JDT获取Java程序的AST结构,为此,我需要在后台将eclipse插件作为独立进程执行。 这可能吗?如果可能,怎么能做到呢?