メソッドFileLocator.resolve(url)
を使用して、bundleentry://something/somewhere/x.txt
のアドレスを/mnt/foo/somewhere/x.txt
の適切なファイルURLに変換することができます。FileLocator.resolve(url)のエスケープ結果
ただし、https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096にも記載されていますが、URLはエスケープされません。例として、参照されたバンドルを含むEclipseのインストールがスペースを含むディレクトリーにある場合、FileLocator.resolve
によって戻されたURLにはスペースが含まれており、そのためにurl.toURI()
が呼び出されません。
- 手動でエスケープするにはどうすればいいですかすべてのURLに必要な文字はありますか?
- バンドルに関連するパスに基づいて
File
オブジェクトを取得するにはどうすればよいですか?参考として
、ここではそのファイルがスペースを含むディレクトリにある場合は、私のプラグインの.jar
ファイル内のディレクトリdir
を検索しようとしたときに失敗したコードは次のとおりです。
final IPath pathOfExampleProject = new Path("dir");
final Bundle bundle = Platform.getBundle(AproveIDs.PLUGIN_ID);
final URL url = FileLocator.find(bundle, pathOfExampleProject, null);
final URL url2 = FileLocator.toFileURL(url);
url2.toURI(); // Illegal character in path at index [...]