he estado rompiendo la cabeza por esto desde hace un tiempo y ahora no puedo encontrar una solución para este problema:Archivo y bundleresource: // URLs
Tengo una aplicación Eclipse RCP que utiliza una biblioteca personalizada empaquetado como tarro. Desde el complemento, estoy llamando a un método dentro del contenedor. Dentro de este método, estoy "obteniendo" un recurso usando this.class.getResource(relPath)
, mientras que relPath
es una ruta relativa a un archivo que necesito. Esto me devuelve un URL
que puedo usar para construir un File
.
Ahora, esto funciona perfectamente si no estoy llamando a este método desde el complemento, sino desde un simple programa Java. La diferencia: Eclipse cargador de clases de RCP devuelve un URL
de protocolo bundleresource://
que no está soportada por File
, mientras que cuando se ejecuta un simple Java-programa, un -URL file://
se devuelve que es completamente bien para construir un File
.
Conozco la clase FileLocator
del Eclipse SDK (que resuelve bundleresource-URLs a URLs de archivo), pero no puedo usarlo en la biblioteca porque no quiero vincularlo a la plataforma Eclipse RCP. debería ser posible usar esta lib de fuentes que no sean Eclipse-RCP también.
Alguien alguna idea sobre cómo puedo cargar este recurso desde una ruta relativa de una manera que funcione tanto cuando se llama al método desde un Eclipse RCP-Plugin o cualquier otro cliente?
Necesito construir un File
en el directorio de esta ruta relativa para buscar archivos dentro. Estoy completamente atascado en este ...
ACTUALIZACIÓN: Si existe la posibilidad de que no sea usando File#list() para obtener el contenido del directorio esto ya me ayudarían ..
ninguna pista muy apreciados,
¿Puede mencionar el código en cuestión? –
@TonnyMadsen Hm, pero básicamente podría ser muy simple: estoy usando this.getClass(). GetResource (relPath) para cargar una ruta dentro de mi classPath. Esto me devuelve un URL de bundleresource: // cuando se hace bajo Eclipse RCP y un archivo: // URL de lo contrario. Al intentar crear un objeto de archivo falla con bundleresource: // URL porque el archivo no admite este protocolo. Como necesito leer el contenido del directorio de "relPath", me veo obligado a usar un archivo ... – quaylar
¿Cómo se convierte la URL a un archivo? –