Foro de elhacker.net

Programación => Java => Mensaje iniciado por: 1mpuls0 en 6 Noviembre 2009, 05:07 am



Título: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: 1mpuls0 en 6 Noviembre 2009, 05:07 am
Hola, estoy haciendo una aplicacion la cual ocupa un archivo de excel, tengo mi archivo a nivel del jar y dentro del jar tambien tengo ese mismo archivo, cuando el arhivo de excel no es copiado junto con el jar, toma el contenido del excel contenido en el jar, pero quiero que al oprimir un boton me abra el xls para ver si el usuario está deacuerdo en tomar esos valores, alguien me puede dar una idea de como hacerlo o que tengo que investigar??


Saludos


Título: Re: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: Leyer en 6 Noviembre 2009, 15:55 pm
sera asi

Código
  1. try {
  2. Desktop.getDesktop().open(new File(getClass().getResource("/bd/Crystal.xml").getFile()));
  3. } catch (IOException e2) {
  4. // TODO Auto-generated catch block
  5. e2.printStackTrace();
  6. }
  7.  

Saludos.


Título: Re: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: 1mpuls0 en 7 Noviembre 2009, 10:55 am
Hola muchas gracias por responder, pero este metodo no me funciona, parece ser que hay un problema en la conversion, he tratado de solucionarlo pero aun no tengo logros. Al querer abrir el archivo me aparece lo siguiente

Código:
java.lang.IllegalArgumentException: The file: java.io.BufferedInputStream@5224ee doesn't exist.
    at java.awt.Desktop.checkFileValidation(Desktop.java:191)
    at java.awt.Desktop.open(Desktop.java:252)
    at interfazValidacion.excel(interfazValidacion.java:349)
    at interfazValidacion.access$600(interfazValidacion.java:10)
    at interfazValidacion$9.actionPerformed(interfazValidacion.java:224)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1170)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1211)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

He intentado con lo siguiente

Código:
Desktop desktop = Desktop.getDesktop();  
        URL url = Thread.currentThread().getContextClassLoader().getResource("mensajes/Error.xls");
        try { 
            desktop.open(new File(url.getPath())); 
        }catch (IOException e) {             
            e.printStackTrace(); 
        }


Código:
Desktop d = Desktop.getDesktop();
        try {
        URI uri = getClass().getResource("/mensajes/Error.xls").toURI();
            d.browse(uri);
        }
catch (Exception e) {
        e.printStackTrace();
        }


Bueno tengo otros metodos, pero son muy parecidos, he instanciado variables para posteriormente hacer la convesion tras conversion, pero no resulta.

Alguna otra sugerencia??

Gracias


Título: Re: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: Leyer en 8 Noviembre 2009, 16:53 pm
prueba usando las class de los jar a ver si tienes acceso aunke deberia hacerse asi ya que se supone que un jar es un comprimido. si no lo puedes hacer con asi la verdad no se me ocurre nada por haora.

Código
  1. java.util.jar.JarEntry;
  2. java.util.jar.JarFile;
  3. java.util.jar.JarEntry;
  4. java.util.jar.JarInputStream;
  5. java.util.jar.Pack200;


Saludos.


Título: Re: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: 1mpuls0 en 8 Noviembre 2009, 16:59 pm
Hola de nuevo, sigo intentando y solo me funciona

Código:
File path = new File("mensajes/Error.xls");
try{
Desktop.getDesktop().open(path);
}catch (IOException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}


Pero no me sirve ya que quiero que ejecute el archivo guardado en el jar :s

Por lo que he mirado el metodo open solo recibe tipo File, asi que me pregunto si haciendo la conversion de InputStream podria funcionar, lo malo es que tampoco puedo hacer la conversion o mas bien no se cual es la manera correcta :S

Help!!

Y muchas gracias


Título: Re: Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Publicado por: 1mpuls0 en 8 Noviembre 2009, 17:01 pm
prueba usando las class de los jar a ver si tienes acceso aunke deberia hacerse asi ya que se supone que un jar es un comprimido. si no lo puedes hacer con asi la verdad no se me ocurre nada por haora.

Código
  1. java.util.jar.JarEntry;
  2. java.util.jar.JarFile;
  3. java.util.jar.JarEntry;
  4. java.util.jar.JarInputStream;
  5. java.util.jar.Pack200;


Saludos.


Ok, intentaré,  y posteo mis resultados

Gracias nuevamente