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

Rutas internas JAR

Estas en el tema de Rutas internas JAR en el foro de Java en Foros del Web. Hola muy buenas, espero que alguien me pueda hechar una mano. Mi problema es el siguiente: Tengo creado un programa para administrar una empresa y ...
  #1 (permalink)  
Antiguo 22/06/2011, 16:01
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Rutas internas JAR

Hola muy buenas, espero que alguien me pueda hechar una mano.
Mi problema es el siguiente:

Tengo creado un programa para administrar una empresa y necesito abrir un archivo .chm (el típico de ayuda cuando presionas f1 en cualquier aplicación).
El archivo se llama help.chm y esta en el interior del jar.

Mi pregunta es, como puedo acceder al él para conseguir abrirlo. He probado 1000 millones de formas pero no consigo abrirlo

Entre otras cosas he probado esto, que funciona en el netbeans pero en cuanto creas el jar ya no puede acceder:

Cita:
ClassLoader classLoader = Administracion.class.getClassLoader();
URL url= classLoader.getResource ("documentacion/help.chm");
File obj = new File(url.getFile());

Runtime r = Runtime.getRuntime();
Process p = null;
String comando[] = {"c:/windows/hh.exe", obj.getPath()};
try {
p = r.exec(comando);
} catch (Exception ew) {
System.out.println("Error ejecutando " + comando[0]);
}
También he probado con:

Cita:
URL url = AdminProductos.class.getResource("");
y tambien falla al crear el jar..... Ya no se que intentar...Muchas gracias de antemano.Un saludo!

Última edición por neofutbol; 22/06/2011 a las 16:34
  #2 (permalink)  
Antiguo 23/06/2011, 03:28
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Rutas internas JAR

Hola:

Las aplicaciones normales de un sistema operativo (como hh.exe, notepad, word, acrobat o cualquier otra) no saben abrir ficheros que están dentro de un jar, por lo que no puedes hacerlo de ninguna manera. En netbeans te funciona porque el IDE no trabaja sobre el jar, sino sobre todos los ficheros en tu estructura de directorios del proyecto, por lo que el fichero de ayuda cuando ejecutas desde netbeans NO está metido en ningún jar.

La única opción es que tu aplicación de alguna forma extraiga el fichero y luego haga lo que estás haciendo con Runtime.getRuntime(), pero sobre el fichero extraido. Para extraer el fichero puedes leerlo a partir de su URL tal cual la estás obteniendo y escribirlo en un fichero externo, o bien puedes usar las clases de java.util.jar http://download.oracle.com/javase/6/...e-summary.html para hacer la extracción.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 23/06/2011, 08:44
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Rutas internas JAR

Lo primero gracias por la rápida respuesta. Tras mucho intentar no he conseguido extraer nada. Por lo menos he aprendido algo que no se puede abrir directamente el archivo dentro del jar.

Podrías darme alguna solución mas especifica?? Lo intentado por todos los metodos... Si no tendre que resignarme y meterlo en la carpeta lib y abrirlo desde ahí... pero mas que por la utilidad que me podría dar, me gustaría hacerlo extrayendolo por aprender un pokito más. Muchas gracias de antemano otra vez. Un saludo!!
  #4 (permalink)  
Antiguo 23/11/2011, 17:19
Avatar de angeljc23  
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Respuesta: Rutas internas JAR

URL url = null;
private void jBtnAyudaActionPerformed(java.awt.event.ActionEven t evt) {
try {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setSelectedFile(new File("/C:/Documents and Settings/AngelJC/Mis documentos/newproject_tmphhp/newproject.chm"));
url= fileChooser.getSelectedFile().toURL();
File obj = new File(url.getFile());
Runtime r = Runtime.getRuntime();
Process p = null;
String comando[] = {"c:/windows/hh.exe", obj.getPath()};
p = r.exec(comando);
} catch (Exception ew) {
System.out.println("Error ejecutando " + ew);
}
}
************************************************
//Este codigo va dentro de un boton
// solo se debe modificar la ruta del fichero en la parte del codigo= fileChooser.setSelectedFile(new File("aqui ruta"));

Etiquetas: internas, jar, rutas
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 02:24.