2

私はEclipseJDTを使用してJavaリファクタリングプラットフォームを構築しています。これは、メモリ内のさまざまなリファクタリングを選択して保存する前に調査するためのものです。ソースファイルの作業コピーのコレクションを作成し、それらをメモリ内で編集し、JDTフレームワークを使用して変更をディスクにコミットできます。

ただし、リファクタリングの一部としてメモリ内に新しい「作業コピー」ソースファイルを生成し、作業コピーをコミットした場合にのみ、対応する実際のソースファイルを作成したいと思います。これが可能であるというさまざまなヒントを見てきました。たとえば、 http ://www.jarvana.com/jarvana/view/org/eclipse/jdt/doc/isv/3.3.0-v20070613/isv-3.3.0-v20070613.jar !/guide/jdt_api_manip.htmには、「作業コピーを作成するために、コンパイル単位がJavaモデルに存在する必要はないことに注意してください」と記載されています。

これまでのところ、私は新しい実ファイルを作成することしかできませんでした。

ICompilationUnit newICompilationUnit = myPackage.createCompilationUnit(newName, "package piffle; public class Baz{private int i=0;}", false, null);

これは私が望むものではありません。コミットするまでファイルシステムに表示されない、新しい「作業コピー」ソースファイルを作成する方法を知っている人はいますか?または同じことを達成するための他のメカニズムはありますか?

4

2 に答える 2

0

このリンクを見ることができます http://wiki.eclipse.org/index.php/EFS#UI_Examples:_Zip_and_Memory_file_systems

そこには、メモリ内 EFS のサンプル実装があります。

于 2010-06-16T07:30:47.023 に答える
0

これは問題の完全な解決策ではないかもしれませんが、Eclipse は EFS (拡張ファイル システム層) を介してリソースを処理します。ファイル システムの実装はプラグ可能です。そのため、インメモリ ファイル システムを指すワークスペースにリンクを作成すると、Eclipse はこれらのリソースを他のリソースと同じように表示するので、編集、コンパイル、または通常 Eclipse でファイルに対して行うことは何でも行うことができます。ただし、これらのファイルは Eclipse の再起動後は存続しません。

他のオプションは、自由にコミットおよびロールバックできる独自のファイル システムを実装することです。しかし、このルートはやり過ぎかもしれません。

ワークスペースにリソースリンクを作成する方法は次のとおりです

これはメモリ内ファイル システムの実装です(ソースは CVS からチェックアウトする必要があり、そのページのリポジトリ内のパスは古いことに注意してください - CVS ブラウザを使用して正しいパスを見つけてください)。

EFS 実装は URI スキーム名で選択されるため、メモリ FS を指すには、リンクのターゲット URI を「memory:」で開始する必要があることに注意してください。

于 2009-12-12T16:51:20.640 に答える