2012-03-29 22 views

Respuesta

10

Usted debe ser capaz de usar:

Program.launch(file); 

para abrir el archivo (usando la aplicación predeterminada o creador). Desde javadoc:

Inicia el ejecutable del sistema operativo asociado con el archivo o la URL (http: // o https: //). Si el archivo es ejecutable, se ejecuta el ejecutable. Tenga en cuenta que un Display ya debe existir para garantizar que este método arroje un resultado apropiado.

Tenga en cuenta que hay algunas peculiaridades en Program.launch() (o al menos no eran, aunque éstos pueden haber corregido en las versiones más recientes del tiempo de ejecución.) Realmente no recuerdo los detalles de los errores, pero hacer algunas comprobaciones para evitar algunos problemas:

  1. Si estás en una plataforma Unix, y que está especificando una ruta absoluta, puede haber problemas para abrir ese archivo. Prefijamos caminos absolutos con /. - para que /tmp/foo se traduzca a /./tmp/foo - aunque realmente no recuerdo los detalles de este error más que eso.

  2. En Windows, si está intentando abrir una ruta UNC, por ejemplo \\server\bar, debe envolver la cadena entre comillas dobles. Por ejemplo: Program.open("\"\\server\bar\"");

+0

En mi aplicación en winXp y win7 un 'Program.launch (" C: \\ dev \\ test.pdf ");' funciona bien - Acrobat Reader se abre y listo. Gracias. – marioosh

+0

@ edward-thomson en qué paquete se encuentra la clase "Programa"? –

1

Trate Desktop.open:

Desktop.getDesktop().open(file); 
+2

Personalmente, preferiría una solución SWT sobre una AWT. El puente AWT <-> AWT generalmente no es necesario y es mejor no usarlo a menos que sea necesario. –

+2

@PranitBauva ¿Por qué? – Baz

1

Tal vez esto puede ayudar a encontrar una decisión: nos encontramos con problemas de espacio PermGen mediante convocatoria Desktop.open() - que está en AWTpackage - fuera de nuestra aplicación SWT.

Así que preferiría Program.launch() sobre Desktop.open() en un entorno SWT.

Cuestiones relacionadas