Newsgroup: it.comp.java
Titolo: eseguire programmi creati con eclipse su altri pc

Ciao a tutti,
ho creato un programma java con eclipse ed ora ho qualche dubbio nel 
portarlo su altri pc.
La situazione attuale è questa: sotto C:\ ho la cartella con il nome del 
progetto,contenente alcuni file a cui il programma fa accesso in lettura e 
scrittura, 3 file .jar contenenti classi che il programma usa e le 
sottodirectory bin/nomepackage e src/nomepackage contenenti appunto i 
sorgenti e i file compilati
ora ho portato tutto su un altro pc dove voglio eseguire il programma senza 
usare eclipse, e per farlo partire scrivo da linea di comando:
java -classpath <directory_del_progetto>;<path del jar 1>;<path del jar 
2>;<path del jar 3>  nomepackage.nomeClasse
questo comando lo scrivo partendo dalla directory C:\nomeprogetto\bin 
(altrimenti non trova la classe eseguibile da avviare)
Il programma funziona, però non mi trova i file su cui il programma deve 
scrivere che si trovano in C:\nomeprogetto (mentre da eclipse questa 
cartella veniva vista come posizione "corrente" e quindi li trovava), ora la 
posizione corrente è ovviamente C:\nomeprogetto\bin e per farlo funzionare 
devo spostare qui tali file.
Le domande sono due:
- come evitare l'inconveniente di spostare i file ogni volta che non uso 
eclipse?
- è normale scrivere un papiro così lungo per avviare il programma o sto 
sbagliando qualcosa?
Grazie a chi mi risponderà 

 sbagliando qualcosa?
Tutte due le cose, ovvero e' normale utilizzando la strada che hai 
preso, sbagliato perche' la strada non e' quella giusta.
:-))
-- 
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'


Ciao,
il tuo problema è molto comune e la soluzione più giusta, a mio
avviso, rimane quella di non utilizzare riferimenti a cartelle che
stanno fuori dalla base del package del tuo progetto (a meno di non
dove fare riferimenti a percorsi assoluti): nel tuo caso il package
comincia dalla cartella src (ovvero da quella bin, una volta compilate
le classi). Se tu spostassi la cartella con le risorse (o solo le
risorse) dentro src, eclipse stesso si preoccuperebbe di ricopiarle,
in fase di building, nella cartella bin e quindi te le troveresti già
lì ogni volta.
Per fare in modo che anche sotto eclipse tutto funzioni, dovrai
probabilmente modificare la parte di codice che implementa l'accesso
alla risorsa (ovvero la creazione del File o dell'URL). Per capire
come fare questo nel modo corretto prova a dare un'occhiata a questo
post: 
http://just-share-it.blogspot.com/2007/10/come-caricare-una-risorsa-anche-dentro.html
Lo stesso post spiega come accedere correttamente ad una risorsa nel
caso in cui avessi realizzato un jar. E' proprio questa un'altra
possibilità che potresti valutare: soprattutto se l'applicazione è
finita, l'ideale sarebbe impacchettare il tutto dentro un file jar
(eclipse consente di realizzarli velocemente tramite wizard, sotto
file -> esporta -> jar) ed eseguire il tutto con un semplice: java -
jar nomeprogetto.jar
In quest'ultimo caso, e rispondo così anche alla tua seconda domanda,
non avrai bisogno di inlcudere ogni volta l'altrimenti necessario
elenco di risorse con la direttiva -classpath, così come il percorso
della classe main: queste verrebbero scritte una volta e per tutte
dentro il file MANIFEST, interno al jar, e caricate all'occorrenza.
Se proprio non vuoi realizzare un jar e sei stanco di dover scrivere
ogni volta quel lungo elenco di direttive per avviare l'applicazione,
ti rimane come unica soluzione quella di realizzare un semplice .bat
(o script) che esegua il comando java, o eventualmente l'utilizzo di
tool come Ant (supportato e gestito nativamente da eclipse), che
potrebbero facilitarti sia la fase di compilazione sia quella di
esecuzione, rendendoti quindi indipendente da eclipse.
Spero di essere stato chiaro.. fammi sapere!
ciao,
Francesco

perfetto,grazie mille a entrambi, siete stati molto gentili.
ciao