Wynik ucieczki FileLocator.resolve (url)

MetodaFileLocator.resolve(url) może być używany do tłumaczenia adresubundleentry://something/somewhere/x.txt do właściwego adresu URL pliku dla/mnt/foo/somewhere/x.txt.

Jednak jest to również udokumentowane whttps://bugs.eclipse.org/bugs/show_bug.cgi?id=145096, adres URL nie jest unikany. Na przykład, jeśli instalacja Eclipse zawierająca wskazany pakiet znajduje się w katalogu zawierającym spację, adres URL zwrócony przezFileLocator.resolve wciąż zawiera przestrzeń i dzwonienieurl.toURI() z tego powodu zawodzi.

Jak mogę ręcznie uciecwszystko potrzebne znaki w adresie URL?Jak mogę dostaćFile obiekt oparty na ścieżce względem bieżącego pakietu?

Jako odniesienie, oto kod, który zawodzi podczas próby odnalezienia katalogudir wewnątrz mojej wtyczki.jar plik, jeśli ten plik znajduje się w katalogu zawierającym spację:

    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 [...]

questionAnswers(3)

yourAnswerToTheQuestion