Resultado de escape de FileLocator.resolve (url)

El métodoFileLocator.resolve(url) se puede utilizar para traducir una direcciónbundleentry://something/somewhere/x.txt a una URL de archivo adecuada para/mnt/foo/somewhere/x.txt.

Sin embargo, que también se documenta enhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=145096, la URL no se escapa. Como ejemplo, si la instalación de Eclipse que contiene el paquete al que se hace referencia está en un directorio que contiene un espacio, la URL devuelta porFileLocator.resolve Todavía contiene el espacio y la llamada.url.toURI() falla por eso

¿Cómo puedo escapar manualmente?todos caracteres necesarios en la URL?¿Cómo puedo obtener unFile objeto basado en una ruta relativa al paquete actual?

Como referencia, aquí está el código que falla al intentar encontrar el directoriodir dentro de mi plugin.jar archivo si ese archivo está en un directorio que contiene un espacio:

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta