我解析它有方法用cofoja书面合同一个Java源代码文件。现在当我创建输入文件的抽象语法树(ast)并对其进行修改时。它可以让我看到Document document,被修改的对象。但是,当我尝试这个文件反映回原来的源文件,下面的声明将引发异常:
// get the buffer manager
ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
以下异常获取MyVisitor.java
Exception in thread "main" java.lang.ExceptionInInitializerError
at ASTModifier.main(ASTModifier.java:205)
Caused by: java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:340)
at org.eclipse.core.filebuffers.FileBuffers.(FileBuffers.java:52)
... 1 more
由于抛出ITextFileBufferManager bufferManager声明这,我不能够改变原始的Java文件。我在网上找到的一个链接:http://www.programcreek.com/2011/05/java-lang-illegalstateexception-workspace- is-closed /#comment-1939
它说:简而言之,这是由于简单地将依赖jar文件添加到常规java项目引起的。要使用JDT,您需要让该程序作为插件(或至少启用OSGi的应用程序)运行,而不是将其作为jar使用。
因为我正在创建一个简单的java项目,是使用FileBuffers类的问题吗?我需要创建插件吗?
2011-08-07
sagar