Newsgroup: it.comp.java
Titolo: Doppio click e via

Salve a tutti,
chiedo scusa se vi sto proponendo un problema scontato, ma è possibile (in
windows) fare in modo che un doppio click su un file class lo faccia
eseguire da java?
Ho provato ad associare l'estensione class a java.exe, ma non so come
passargli il classpath.
Esiste quache impostazione o qualche trucco per farlo?
Grazie mille.

> Esiste quache impostazione o qualche trucco per farlo?
Dipende da cosa vuoi fare! Puoi:
1) impostare la variabile d'ambiente CLASSPATH a livello di sistema
2) inserire il .class in un file .jar con un manifest che specifica che
quella classe è la "main class" (i dettagli non me li ricordo, devi cercare
sui tutorial sun): forse nel manifest puoi anche specificare le dipendenze
che quel jar ha da un insieme di altri jar, indicandogli dove trovarli
(ovvero specificare il classpath, in un certo senso).
3) scrivere un semplice .bat che imposta il classpath e poi lancia la tua
classe.
4) domandarti come fare "un eseguibile da una classe java" come fa una
persona su tre quasi tutti i giorni sul newsgroup! ( ;-) )
5) studiarti java web start e fare partire l'applicazione come app. web
start
6) usare uno di quei "wrapper eseguibili" (à la jedit) e fare partire la
classe cliccando su un exe
7) varie ed eventuali

 Dipende da cosa vuoi fare! Puoi:
[cut]
Grazie, ma penso di essermi spiegato male...
Conosco già i vari jar, exe, bat etc... vorrei solo poter far partire
piccoli programmi che stanno in un .class unico, ma fare in modo che basti
un doppio clic.
Quello che riesco a fare con l'associazione delle estensioni di win è una
cosa simile alla riga di comando "java <percorso\nome.class>" (che
ovviamente non va bene), mentre quello che vorrei riuscire a fare è una cosa
del tipo "java -classpath <percorso> <nome>".
E' possibile?

 E' possibile?
direi di sì, ma a parte tutto, perché non setti la variabile di ambiente
CLASSPATH?


A dire il vero non so bene cosa sia... e' grave? Finora č andato tutto bene,
quindi non mi sono mai posto il problema.
E' quella che puo' servire al mio scopo? Se si, come?+
Grazie!

 E' quella che puo' servire al mio scopo? Se si, come?+
Con la variabile d'ambiente CLASSPATH puoi impostare gli stessi dati che
passeresti all'esecutore java.exe tramite il parametro -classpath. Ovvero,
se in una finestra dos fai
SET
CLASSPATH=c:\pippo\pluto\libreria.jar;c:\pippo\pluto\paperino\directoryconcl
assi; ecc.ecc.
non hai più bisogno di specificare le stesse cose sul classpath. Dopodiché
puoi fare in modo che il classpath "di default" della tua macchina includa
sempre quelle informazioni. Il modo per farlo dipende dal sistema operativo:
sotto win2K/XP devi andare sotto "proprietà del sistema" (ad esempio
pulsante destro su risorse del computer - proprietà" poi andare nella
sezione "avanzate" e cliccare su "variabili d'ambiente". Qui puoi impostare
una variabile CLASSPATH che contiene tutti i jar che ti servono "sempre", e
le directory che contengono le classi che vuoi aggiungere al classpath in
modo che siano sempre reperibili. Nota che se le tue classi sono nel
package, che so, it.pippo.pluto e quindi sono in una directory, ad esempio
c:\paperino\it\pippo\pluto , tu al classpath ci devi aggiungere la directory
radice, ovvero in questo caso particolare c:\paperino.

 passeresti all'esecutore java.exe tramite il parametro -classpath.
[cut]
Ho capito, grazie. Purtroppo pero' non riuscirei a sfruttarlo in maniera
proficua, perche' ho troppe classi in giro, e ad ogni nuova classe dovrei
andare a modificarlo...
A meno che non esista un modo per indicare una cartella e tutte le sue
sottocartelle.
Nel frattempo ho provato a farmi un programmino in c: gli passo il percorso
della classe e lui si occupa di distinguere il classpath e il nome della
classe. Pensavo di riuscire a farcela in questo modo perň, al doppio click
su un file, windows passa il percorso in maniera 'case unsensitive', cosě il
nome della classe risulta sbagliato per le maiuscole.
Spero che una soluzione esista, in ogni caso grazie per l'aiuto!

 andare a modificarlo...
No, devi fare il contrario, nel CLASSPATH ci devi mettere la path del
compilatore javac.exe,
in modo che quando ti trovi nella cartella con il tuo programma baste
scrivere:   javac nome_classe.java.
TIPS: se nella console usi le frecce UP e DOWN riscrivi velocente i comendi
che avevi precedente lanciato.
Delvy


Scusami, ma è sbagliato. Tu stai parlando del PATH, non del CLASSPATH (tra
l'altro, è sicuramente una FAQ).
Impostando il PATH su c:\percorso, tutti i file della directory percorso
saranno eseguibili da qualsiasi posizione.
Discorso diverso invece, per il CLASSPATH. Nel CLASSPATH indichi la
directory radice dei tuoi package, quindi è consigliabile farsi una
directory c:\mypackages, e inserire i propri package a partire da lì. Per
esempio, il package "geometria" dovrà partire da c:\mypackages\geometria,
con il CLASSPATH impostato su c:\mypackages;
fermo restando una cosa, e cioè che se hai i package sparsi in ogni dove
puoi comunque specificarli tutti nel CLASSPATH (SET CLASSPATH =
c:\mypackages; c:\prove; h:\provette;).
Spero di essermi capito.
Ciao