2012-03-29 15 views

risposta

10

Si dovrebbe essere in grado di utilizzare:

Program.launch(file); 

per aprire il file (utilizzando l'applicazione predefinita o creatore). Da javadoc:

Avvia l'eseguibile del sistema operativo associato al file o all'URL (http: // o https: //). Se il file è un eseguibile, viene avviato il file eseguibile. Si noti che uno Display deve già esistere per garantire che questo metodo restituisca un risultato appropriato.

Nota che ci sono alcune peculiarità in Program.launch() (o almeno ci sono stati, anche se questi possono sono stati corretti nelle versioni più recenti del runtime.) Non mi ricordo le specifiche degli insetti, ma noi fare alcuni controlli per aggirare alcuni problemi:

  1. Se siete su una piattaforma Unix, e si sta specificando un percorso assoluto, ci possono essere problemi di apertura di quel file. Prefixiamo i percorsi assoluti con /. - in modo che /tmp/foo sia tradotto in /./tmp/foo - anche se in realtà non ricordo più le specifiche di questo errore.

  2. Su Windows, se si sta cercando di aprire un percorso UNC - per esempio \\server\bar - è necessario per avvolgere la stringa tra virgolette. Per esempio: Program.open("\"\\server\bar\"");

+0

Nella mia app su winXp e win7 un 'Program.launch (" C: \\ dev \\ test.pdf ");' call funziona bene - Acrobat Reader è aperto e il gioco è fatto. Grazie. – marioosh

+0

@ edward-thomson in quale pacchetto è stata trovata la classe "Programma" ?? –

1

Prova Desktop.open:

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

Personalmente, preferirei una soluzione SWT su una AWT. Il bridge AWT <-> AWT di solito non è necessario ed è meglio non usarlo a meno che non sia necessario. –

+2

@PranitBauva Perché? – Baz

1

Forse questo può aiutare a trovare una decisione: ci siamo imbattuti in PermGen spazio guai su convocazione Desktop.open() - che è in AWTpackage - out della nostra applicazione SWT.

Quindi preferirei Program.launch() su Desktop.open() in un ambiente SWT.

Problemi correlati