Google

domingo, 2 de septiembre de 2007

Referencia a archivos dentro de un jar

Cuando se crean archivos jar en muchos casos en su interior se guardan archivos que necesita nuestra aplicacion. Para que esta reconozca los archivos se deben hacer referencia a los mismos mediante las siguientes lineas:
EJEMPLO:
ClassLoader classLoader = NombreClase.class.getClassLoader();
URL url= classLoader.getResource ("image/image.gif");
ImageIcon imagen = new ImageIcon (url);

8 comentarios:

Anónimo dijo...

Hola, una duda, si deseo cargar en vez de una imagen un fichero plano y agregarle información, ¿cómo debo hacerlo? Para leer no tengo problema pero para escribir?

Jessid dijo...

pues parece que no se puede amigo...yo necesito eso exactamente, pero nadie me da razon de eso....

Jessid dijo...

de todas maneras, si lo averiguas, te agradeceria que me escribieras a
yevelez at yahoo dot com

Gracias

Anónimo dijo...

Pues si se puede, googleando no encontraba nada, hasta que entre en unos de los jar que trae el java como ejemplos, encontre en un codigo esto:


java.net.URL url = getClass().getResource("/resources/textoPlano.txt");

try {
// convert url to buffered string
java.io.InputStream is = url.openStream();
java.io.InputStreamReader isr = new java.io.InputStreamReader(is, "UTF-8");
java.io.BufferedReader reader = new java.io.BufferedReader(isr);

// read one line at a time, put into tree
String line = reader.readLine();

while(line != null) {
System.out.println(line);
line = reader.readLine();
}

} catch (java.io.IOException e) {
}


Algunas cosas estan modificas de la original, pero funciona.Espero que le sea de ayuda

Omar López Cruz dijo...

Que tal amigos, ando en busca de algo similar, lo que pasa es que estoy desarrollando un compilador para Java muy basico, y quisiera buscar dentro de la misma API de Java, por ejemplo el programa tendraa que identificar si la declaracion "String hola = new String("Hola");"este bien teniendo como referencia la clase String contenida dentro del paquete rt.jar->java->lang->String.class y pues tener incluso acceso al archivo .class para si algun programador usa algún metodo de la clase String pueda evauar que es correcto por ejemplo "hola.charAt()", poder decir que falta un campo de tipo entero, tomando como referencia los metodos contenidos en el archivo String.class, espero y me puedan ayudar, de antemano muchas gracias

Anónimo dijo...

Debianator que rayos? eso es para leer, es lo mismo que esta arriba, he averiguado y no se puede escribir ya que alteras el jar en si, es decir para escribir deberías reconstruir el jar osea unzip y zip con el archivo modificado.

Erick Brenes dijo...

Estoy intentando accesar un pdf que tengo en el JAR, en modo debug, me saca la dirrecion pero no me abre el archivo pero en el momento de ejecutarlo en Java ni la direccion me entrega correcto, alguna idea?

try {
URL ur = getClass().getResource("/Other/HowTo.pdf");

String msPath = ur.getFile();//.replaceFirst("/", "");
txtRls.setText(txtRls.getText() + " \n " + msPath);
System.out.println(msPath);
msPath = msPath.replace("/", "\\\\");

Process p = Runtime
.getRuntime()
.exec("rundll32 url.dll,FileProtocolHandler " + msPath);
p.waitFor();

txtRls.setText(txtRls.getText() + " \n " + msPath);

System.out.println(msPath);
System.out.println("Done");

} catch (Exception ex) {

ex.printStackTrace();
}

Erick Brenes dijo...

Amigo, encontre una solucion que les puede servir, para extraer cualquier archivo del JAR

http://foro.chuidiang.com/java-j2se/abrir-un-pdf-incluido-en-mi-jar/?action=printpage