deployment Archivo Java Jar: use los errores de recursos: URI no es jerárquico




2 Answers

Si por alguna razón necesita crear un objeto java.io.File para apuntar a un recurso dentro de un archivo Jar, la respuesta está aquí: https://stackoverflow.com/a/27149287/155167

File f = new File(getClass().getResource("/MyResource").toExternalForm());
java deployment resources executable-jar

Implementé mi aplicación en el archivo jar. Cuando necesito copiar datos de un archivo de recursos al exterior del archivo jar, hago este código:

URL resourceUrl = getClass().getResource("/resource/data.sav");
File src = new File(resourceUrl.toURI()); //ERROR HERE
File dst = new File(CurrentPath()+"data.sav");  //CurrentPath: path of jar file don't include jar file name
FileInputStream in = new FileInputStream(src);
FileOutputStream out = new FileOutputStream(dst);
 // some excute code here

El error que he encontrado es: el URI is not hierarchical . Este error no me encuentro cuando se ejecuta en IDE.

Si cambio el código anterior como ayuda en otra publicación en :

InputStream in = Model.class.getClassLoader().getResourceAsStream("/resource/data.sav");
File dst = new File(CurrentPath() + "data.sav");
FileOutputStream out = new FileOutputStream(dst);
//....
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) { //NULL POINTER EXCEPTION
  //....
}



Si bien me encontré con este problema, me gustaría agregar otra opción (a la explicación perfecta de @ dash1e):

Exporte el complemento como una carpeta (no como un contenedor) agregando:

Eclipse-BundleShape: dir

a su MANIFEST.MF .

Al menos cuando exporta su aplicación RCP con el asistente de exportación (basado en un archivo *.product ) esto se respeta y producirá una carpeta.




Related