lennynero ha scritto:il fatto che installando la JDK risolvo il problema del javac mi è chiaro, quello che non capisco è come mai Ant(che mi sembrerebbe integrato IN Eclipse) lavora come se fosse un tool esterno...
Perchè si tratta proprio di un tool esterno, verso il quale eclipse ti fornisce alcune funzioni di supporto (di bridging per progetti sviluppati al di fuori di eclipse, soprattutto), tipo l'importare un progetto non-eclipse tramite il suo ant buildfile (di solito build.xml), generare un buildfile per il progetto corrente secondo le attuali impostazioni del progetto, editor di file ant ecc.
lennynero ha scritto:Utilizzando la funzione esporta Jar file mi permette di scegliere le risorse da esportare, mentre se scelgo Runnable Jar non posso farlo.
Perché, in questo caso, eclipse ti esporta l'intero progetto in un jar generando automaticamente il MANIFEST che indica il main che hai selezionato come quello da eseguire.
Il mio consiglio, date le tue esigenze, è di usare ant, ma di prendere in mano la questione creando a manina i vari target che ti servono.
Magari parti comunque dal file generato da eclipse quando scegli "Ant buildfile" sotto il menù export, ma poi affiancagli un tuo file ant come suggerito in cima al file generato.
lennynero ha scritto:
Ammesso di utilizzare Ant, posso scegliere le risorse per target diversi, soprattutto: in base ad un target posso generarne il runnable jar? Non mi è chiaro che intendi per MANIFEST diversi, come posso configurarli? posso fare quello che dicevo prima, ovvero fare 2 runnable jar con risorse specifiche?
Usando ant a manina, puoi indicare tutti i target di tipo jar che vuoi, indicando, per ciascuno, le classi che lo comporranno.
Il fatto che un jar sia "runnable" o meno dipende solo dalla presenza, nella struttura di directory che contiene, del file META-INF/MANIFEST, che indica alla JVM varie informazioni riguardo il jar, tra le quali (non obbligatoriamente) la classe contenente il main da lanciare.
Il task <jar> di ant (ant lancia sequenze di task) prevede, tra le sue opzioni, proprio la specifica di un MANIFEST per il jar che si va creando. Questo ti permette di specificare un MANIFEST in sede di creazione di un jar ed un altro MANIFEST quando lanci la creazione del secondo jar.
Per esempio:
Codice: Seleziona tutto
<target name="compile-all" description="compila tutte le classi">
<javac srcdir="./src" destdir="./build">
</target>
<target name="jar1" description="crea il primo jar con una parte di classi" depends="compile-all">
<jar basedir="./build" excludes="file1 file2 file3 file4" manifest="pippo.txt" destfile="./jar1.jar"/>
</target>
<target name="jar2" description="crea il secondo jar con una parte di classi" depends="compile-all">
<jar basedir="./build" excludes="file5 file7 file6 file8" manifest="pk.txt" destfile="./jar2.jar"/>
</target>
Ho omesso i tag di project e altra roba cosmetica che puoi comunque aggiungere, ma il succo è tutto qui.
Ponendo di avere i sorgenti sotto una directory src e di avere i file .class sotto build, con questi due target (jar1 e jar2) non fai altro che impacchettare tutti i file sotto build tranne quelli specificati in excludes (c'è anche la voce includes, ovviamente), usando l'opportuno file di manifest a seconda che tu stia impacchettando jar1 o jar2. Nessuno ti vieta, poi, di creare un altro target che automatizza la creazione di entrambi i jar, semplicemente indicando come dipendenza (depends) i due target jar1 e jar2.
Qui trovi il manuale di ant, compreso l'elenco di tutti i task builtin.
teox99 ha scritto:qualcuno di voi ha avuto mai esperienza con ECLIPSE + Nasa World Wind?
In che senso? Devi fare debugging di NWW?