我的服务器中有一个导出的Eclipse Java项目,我希望能够编译项目并使用ASTParser
和JDT。
我可以使用BatchCompiler
编译项目,但是它在控制台上运行并给我PrintWriter
而不是一系列问题和错误。此外,我希望能够在Eclipse中使用提议,并且BatchCompiler
没有为此目的而构建。
因此我尝试使用ASTParser
,它可以与char[]
或ICompilationUnit
一起使用。 CompletionProposalCollector
和org.eclipse.jdt.internal.compiler.Compiler.Compiler
需要ICompilationUnit
所以我必须创建一个只能由IJavaProject(https://dl.dropboxusercontent.com/u/10773282/2012/eclipse_workspace.pdf)创建的ICompilationUnit
才能使用这些功能。
似乎创建IJavaProject
的唯一方法是使用ResourcesPlugin.getWorkspace()
,但它会在我的计算机上返回java.lang.IllegalStateException: Workspace is closed.
,似乎原因是我编写的程序不是Eclipse插件。
有没有办法在没有Eclipse环境的情况下创建IJavaProject?
答案 0 :(得分:3)
从评论中看,您似乎只是尝试做的不仅仅是解析,您实际上想要获得某种形式的内容辅助。
我担心你要求的太多了。没有简单的方法可以在运行的Eclipse实例之外获得JDT的强大功能和灵活性(相信我,我已经尝试过了)。没有简单的方法,但如果你有勇敢和坚强的意志,你可以尝试以下方法:
org.eclipse.jdt.internal.compiler.env.INameEnvironment
的备用实现。此实现将能够在实际项目结构中查找类型,文件和编译单元。您需要重新支持内容辅助,但这很可能会相当不错。我实际上对做这样的事情很感兴趣(但我没时间去做)。如果您正在认真考虑创建可在服务器上运行的无头JDT,请随时询问更多信息。我对JDT内部非常熟悉。
答案 1 :(得分:2)
我遇到了类似的问题。以下是如何在没有Eclipse的情况下使用ASTParser
(它只需要类路径上的核心JDT JAR):http://blog.pdark.de/2010/11/05/using-eclipse-to-parse-java-code/