が親切記事 http://www.eclipse.org/articles/article.php?file=Article-javaCodeManipulation_AST/index.htmlJDTで修正された抽象構文ツリーを元のJavaソースファイルに戻す方法。
の「それを書き留める」セクションを参照してください私はcofojaを使って書かれた契約とメソッドを持つJavaソースコードファイルを解析しています。今、私は、入力ファイルの抽象構文木(ast)を作成し、それを変更します。それは、ドキュメントドキュメント、オブジェクトが変更されていることを私に示すことができます。次の例外が
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.<clinit>(FileBuffers.java:52)
... 1 more
ためのMyVisitor.javaにITextFileBufferManager bufferManager
宣言のためにスローされます
// get the buffer manager
ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
:私は元のソースファイルにこの文書を反映しようとする。しかし、次の宣言は、例外がスローされますこれは、私は元のJavaファイルを変更することはできません。私がネット上で見つけたリンクの1つ:http://www.programcreek.com/2011/05/java-lang-illegalstateexception-workspace- is-closed /#comment-1939
それは簡単に、通常のJavaプロジェクトに依存jarファイルを追加することによって発生します。 JDTを使用するには、プログラムをjarとして使用するのではなく、プラグイン(または少なくともOSGi対応のアプリケーション)として実行する必要があります。
私は単純なJavaプロジェクトを作成しているので、それはFileBuffersクラスを使用するための問題ですか?代わりにプラグインを作成する必要がありますか?
Hey..what私が代わりにRCPアプリケーションのEclipseプラグインを作成した場合は? EclipseプラグインでJDTを使用できるかどうかコンソールウィンドウに出力を表示できるかどうか – sagar
はい。 RCPアプリの代わりにプラグインを作成することができます。しかし、プラグインのみを作成すると、Eclipseアプリケーションの一部としてしか実行できなくなります(プラグインをEclipseにプラグインしてその機能を呼び出す方法が必要になります)。自分でアプリケーションを作成する場合は、機能の呼び出し方法を完全に制御できます。 –