Foros del Web » Programación para mayores de 30 ;) » Java »

abrir pdf desde jar

Estas en el tema de abrir pdf desde jar en el foro de Java en Foros del Web. Saludos, quiero abrir un pdf al pulsar un enlace. En mi aplicacion me va bien, pero al crear un jar y abrirlo desde cualquier ubicacion ...
  #1 (permalink)  
Antiguo 13/07/2010, 16:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
abrir pdf desde jar

Saludos, quiero abrir un pdf al pulsar un enlace. En mi aplicacion me va bien, pero al crear un jar y abrirlo desde cualquier ubicacion no me lo abre. Sera que no me lo encuentra, pero es que esas carpetas estan el jar. No lo entiendo.
Mi codigo es este:

En mi proyecto esta:
C:\rpni\src y de ahi cuelgan varias carpetas, entre ellas varios paquetes y una que se llama imagenes/iconos/miPdf.pdf (dentro de src).

Al crear el jar, con el boton derecho en build fat-jar y finalizar directamente, al abrirlo con el winzip tengo las siguientes carpetas:
- src (dentro tiene tres carpetas, javax, com y .svn - nada que ver con lo mio)
- imagenes y dentro otra iconos y dentro el pdf
- tambien los paquetes que tenia yo dentro del src de mi proyecto en eclipse.

La instruccion con que lo llamo es:

File path = new File (Proyecto.class.getResource("imagenes/iconos/inria-RR-3449.pdf").toURI());
Y el jar lo ejecuto desde donde me lo crea (desde c:\rpni\ que es donde estan el bin y el src de mi proyecto). Si lo ejecuto desde aqui mismo no va, desde ninguna ubicacion.

He probado todas las anteriores pero nada.
Y solo me queda hoy para solucionarlo.
por favor una ayudaa !!!
Muchas gracias.
  #2 (permalink)  
Antiguo 13/07/2010, 17:15
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: abrir pdf desde jar

El problema lo tienes porque dependiendo del sistema en el que lo estés ejecutando, el jar tomará como directorio raíz uno distinto al suyo.

Échale un vistazo a esto

http://es.debugmodeon.com/articulo/o...cacion-en-java

Se puede hacer más sencillo, pero ahí está bastante bien explicado, a mí me sirvió.

O éste

http://www.forosdelweb.com/f45/como-...ta-jar-816164/

Última edición por Xerelo; 13/07/2010 a las 17:24
  #3 (permalink)  
Antiguo 13/07/2010, 18:39
Avatar de jcMouse  
Fecha de Ingreso: noviembre-2009
Ubicación: Bolivia
Mensajes: 116
Antigüedad: 14 años, 4 meses
Puntos: 9
Respuesta: abrir pdf desde jar

al crear un JAR que contenga tus archivos como imagenes, sonido y en este caso un archivo PDF, cuando los llamas con

File path = new File (Proyecto.class.getResource("imagenes/iconos/inria-RR-3449.pdf").toURI());

la direccion que te devuelve no es la misma que la que obtienes al ejecutar la aplicacion desde el IDE, por ejemplo, desde el IDE obtienes algo como:

c:\rpni\src\imagenes\iconos\inria-RR-3449.pdf

pero cuando ya tienes el JAR creado y lo ejecutas, la ruta de los recursos que tienes dentro el JAR cambia, por ejemplo:

c:\carpeta_donde_tienes_el_jat\TUARCHIVOJAR.JAR!\imagenes\iconos\inria-RR-3449.pdf

esa es la razon por la cual no puedes leer el PDF

__________________
Problem?
Estoy aquí
Foro Code Army
  #4 (permalink)  
Antiguo 14/07/2010, 02:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: abrir pdf desde jar

1 ) Para Xerelo , mas o menos me aclaro (la razon la entiendo, pero no el que hacer para solucionarlo). Con los iconos gif no me pasaba eso, le pongo imagenes / iconos / nuevo.gif y me los muestra sin problema.

No habria otra manera mas facil de hacerlo?? Si solo hay esta:

Que hay que meter ese metodo get dentro de mi clase ? Y luego para que me lo muestre desde mi aplicacion y desde el jar que tengo que poner ? Es que ahora estoy bastante perdido.


2) para jcMouse

como tendria que hacer para que me acceda desde el jar entonces, es que no me cuadra:
c:\rpni \ rpni.jar \ imagenes \ iconos \ miPdf.pdf ..........

Por favor, una ultima ayuda.
Muchas gracias por las respuestas.
  #5 (permalink)  
Antiguo 14/07/2010, 03:34
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: abrir pdf desde jar

Código:
//Obtener dirección absoluta del fichero de ejecución .class o .jar
	    private static String direcAbs() throws Exception{
	    	
	    	/*La dirección recuperada tiene la forma
	    	 *? equivale a / o \ segun el S.O.
	    	 *Desde un jar=> java:file:?<direccion absoluta jar>!<relativa del resource elegido dentro del jar>
	    	 *Desde class=>file:?<direccion absoluta resource> */
	    	
	    	String res = "nombreClaseDentroDelJar.class";
	    	String direcc = Principal.class.getResource(res).toString();
	    	//Separador de directorios del sistema
	    	String sep = File.separator;

	    	if (direcc.startsWith("jar:"))
	    		direcc = direcc.substring(4,direcc.length() - ("!" + File.separator + res).length());
	    	
	    	File fich = new File (new URL(direcc).toURI());
	    	
	    	//Recorres la estructura hasta que estés en el directorio que quieras
//Esta parte la modificas según tus necesidades
	    	do {
	        	fich = fich.getParentFile();
	    	}while (fich.toString().endsWith("bin"));
	   	
	    	return fich.toString()+ sep;
	    }
Éste lo utilicé para leer un txt que estaba en el mismo directorio del jar.

Suerte
  #6 (permalink)  
Antiguo 15/07/2010, 01:45
 
Fecha de Ingreso: marzo-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: abrir pdf desde jar

He conseguido que me muestre el pdf en otras rutas de mi ordenador, desde el escritorio, etc .. (al abrirlo me lo abre como temp;miPdf.pdf) ... pero si lo ejecuto desde otro ordenador distinto no me lo abre.

¿ Que tengo que tener en el otro ordenador la misma estructura de carpetas ? No se podria ejecutar desde cualquier ruta ?

El codigo que le puse es:

try{
File directorio = new File("temp");
directorio.mkdirs();
directorio.setWritable(true);
String archivo = directorio.getCanonicalPath() + File.pathSeparator + "inria.pdf";
File temp = new File(archivo);
InputStream is = this.getClass().getResourceAsStream("/imagenes/inria.pdf");
FileOutputStream archivoDestino = new FileOutputStream(temp);
FileWriter fw = new FileWriter(temp);
byte[] buffer = new byte[512*1024];
int nbLectura;
while ((nbLectura = is.read(buffer)) != -1)
archivoDestino.write(buffer, 0, nbLectura);
//cierras el archivo,el inputS y el FileW
fw.close();
archivoDestino.close();
is.close();
Desktop.getDesktop().open(temp);
} catch (IOException ex) {
System.out.println("Problema al abrir el pdf");
}


Por favor, lo ultimo que estoy cerca y solo me queda hoy de plazo.
Muchas gracias !!!
  #7 (permalink)  
Antiguo 16/07/2010, 10:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: abrir pdf desde jar

Lo que me hace por un lado, me lo deshace por el otro:

Dos cosas:

1- Ahora no me muestra las imagenes de la ayuda de la aplicacion que tengo en javahelp.

Tengo los ficheros de ayuda en c:\rpni\src\help\html\agregar.html
y las imagenes estan en c:\rpni\src\imagenes\ayuda\errores\error.gif

Dentro de agregar.html para acceder a las imagenes hago:
<img src="http://www.forosdelweb.com/f45/abrir-pdf-desde-jar-824621/..\..\imagenes\ayuda\errores\cadRepetida.gif">

en mi aplicacion funciona, pero si hago un jar y lo ejecuto desde cualquier lado, incluso desde donde me lo crea, en c:\rpni no se ve ninguna imagen.

¿Que puedo hacer?


2- Si hago el jar, el pdf se ve bien, pero si guardo ese jar en un cd y ejecuto el jar desde el cd (en e:), no se ve el documento pdf. ¿Solo me funcionaria en cualquier unidad c o como lo puedo solucionar?

Lo que me imagino que intenta es crear ese archivo temporal, por lo que si lo hago desde un cd, nome dejaria. ¿ Que otra opcion puedo hacer?


Por favorr, un cable !!!
Muchas gracias.

Última edición por alemag; 16/07/2010 a las 14:06

Etiquetas: jar, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:39.