PDA

View Full Version : [java] eseguire un programma che apra un pdf o un file html


ceccoggi
19-02-2007, 03:20
in un lavoro che devo consegnare x l'uni c'è un punto dove chiede di inserire un menù di aiuto. Ora visto che il lavoro in questione è il gioco di pacman, nn ho la minima idea di cosa inserire in sto menù di aiuto, così mi è venuto in mente di creare un item che mi apre la relazione che farò a lavoro ultimato. Ora la relazione sarà un file pdf, ma volendo posso facilmente farla anche in html...
C'è un modo tale x cui cliccando su questo item mi apra sto pdf o html usando i programmi predefiniti dal sistema operativo? (il mio pacman deve girare sia su linux che su win)

Grazie mille

PGI-Bis
19-02-2007, 09:00
In Java 6 puoi usare:

java.awt.Desktop.getDesktop().open(file);

dove file è il percorso del file che vuoi aprire con l'applicazione predefinita di sistema.

Per versioni precedenti alla 6 puoi usare JDIC:

https://jdic.dev.java.net/

Il java.awt.Desktop di Java 6 è lo

org.jdesktop.jdic.desktop.Desktop

di JDIC.

andbin
19-02-2007, 09:04
Ora la relazione sarà un file pdf, ma volendo posso facilmente farla anche in html...
C'è un modo tale x cui cliccando su questo item mi apra sto pdf o html usando i programmi predefiniti dal sistema operativo? (il mio pacman deve girare sia su linux che su win)Se usi Java 6, puoi usare il metodo open() della nuova classe java.awt.Desktop.

Altrimenti puoi usare il metodo exec della classe Runtime:
Runtime rt = Runtime.getRuntime ();
Process proc = rt.exec (new String[] { "cmd", "/C", "start", "tuo-documento.pdf" });Questo sopra però vale solo per Windows. Per linux non saprei ...

ceccoggi
19-02-2007, 14:51
mm, purtroppo st'affare deve essere multipiattaforma, quindi escluderei le soluzioni che funzionano solo sotto windows..
Per quanto riguarda Java 6 che già integra il metodo di apertura file ottengo questo errore:

#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_FLT_STACK_CHECK (0xc0000092) at pc=0x0093ce69, pid=1988, tid=1500
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode, sharing)
# Problematic frame:
# v ~RuntimeStub::resolve_opt_virtual_call
#
# An error report file with more information is saved as hs_err_pid1988.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)



In pratica mi apre il file, ma mi chiude pacman :cry:

Non esistono altre soluzioni x versioni precedenti della jvm, o qualcuno sa dirmi a cosa è dovuto il mio errore?
(x PGI-bis, preferirei non usare l'altro metodo che mi hai consigliato, in quanto non penso che il mio prof si metta a scaricare una nuova libreria solo per me..)
Grazie

PGI-Bis
19-02-2007, 15:13
Controlla il percorso del file che stai cercando di aprire e verifica che esista un'associazione per quel tipo di file.

ceccoggi
19-02-2007, 15:41
Controlla il percorso del file che stai cercando di aprire e verifica che esista un'associazione per quel tipo di file.

Si si , ma esiste un associazione su quel file, è un normale pdf che sotto win apro con foxit reader... e cliccando sulla voce del menu relativa mi apre il file benissimo con foxit reader...solo mi chiude il programma principale (ossia pacman)

PGI-Bis
19-02-2007, 16:06
Visto che uso anche io Foxit Reader ho fatto una prova. Niente crash (AMD64 3200). E' possibile che sia un bug della JVM o del parte nativa di Desktop. Devi fare un paio di esperimenti.

1. Apri un file che non sia un PDF e vedi se crasha.
2. Scarica JDIC e prova a usare quello per aprire il file PDF.

L'alternativa è fare come dice Andbin. Apri "a mano". Per farlo devi andare nel forum SO Alternativi e chiedere quale sia il comando per aprire un file con l'applicazione predefinita. Crei poi una classe che legge la stringa restituita da System.getProperty("os.name") e secondo il valore che ha sceglie un comando o l'altro.

ceccoggi
19-02-2007, 16:47
non saprei cosa succede a sto punto...se ti passassi via mail il pacchetto jar e vedi se da lo stesso errore sulla tua jvm? Purtroppo non ho altri pc sul quale provarlo e non ho trovato notizie in merito su google..

se sei d'accordo, passami il tuo indirizzo email via pvt..

Grazie

PGI-Bis
19-02-2007, 16:59
hai un pvt

ceccoggi
20-02-2007, 16:34
pgi, you've got a mail ;)