2011-08-07 10 views
1

が親切記事 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クラスを使用するための問題ですか?代わりにプラグインを作成する必要がありますか?

答えて

0

短い回答:はい。開いているワークスペースで実行している場合(つまり、Eclipseプラグインを作成している場合)、JDT APIのみを使用できます。

Eclipse APIを使用する単純なプログラムを作成する場合は、おそらくRCPアプリケーションを作成する必要があります。これにより、Eclipseプラグインのsib0セットを使用していくつかの機能を作成することができます。

RCPの良いチュートリアルはここにある:

http://www.vogella.de/articles/EclipseRCP/article.html

+0

Hey..what私が代わりにRCPアプリケーションのEclipseプラグインを作成した場合は? EclipseプラグインでJDTを使用できるかどうかコンソールウィンドウに出力を表示できるかどうか – sagar

+0

はい。 RCPアプリの代わりにプラグインを作成することができます。しかし、プラグインのみを作成すると、Eclipseアプリケーションの一部としてしか実行できなくなります(プラグインをEclipseにプラグインしてその機能を呼び出す方法が必要になります)。自分でアプリケーションを作成する場合は、機能の呼び出し方法を完全に制御できます。 –

関連する問題