0

こんにちは、Eclipse のプラグインに取り組んでいます。これには、Java プロジェクトのクラスパス コンテナーの作成/維持が含まれます。状況によっては、コンテナー名 ( getDescription()) が変更される可能性があります。コンテナーまたはプロジェクトを選択して F5 キーを押すだけで問題なく更新され、新しい名前が表示されますが、プログラムでこれを行うことはできないようです。私はもう試した:

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
...
for (IProject p: root.getProjects()) {
    ... some checks done here...
    p.refreshLocal(IResource.DEPTH_INFINITE, null);
}

しかし、これは名前を更新していないようです。RefreshActionまた、 (F5 を押したときに使用されると思われる)部分を複製するなどのばかげたことも試しましたが、それもうまくいきませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

2

JDT は、クラスパス コンテナーが不変の方法で動作することを期待していることがわかりました。つまり、IClasspathContainer メソッドによって返される値は、呼び出しごとに変わることは想定されていません。もしそうなら、JDTで面白いことが起こる可能性があります。これはあまり優れた API ではありません。

したがって、それを不変オブジェクトとして扱い、何かを変更する必要がある場合 (エントリまたは説明)、JavaCore.setClasspathContainer() 呼び出しを介して新しい IClasspathContainer インスタンスを提供します。これにより、すべてが正しく更新されます。

于 2012-10-09T20:33:58.417 に答える