Eclipse+Ant

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Eclipse+Ant

Messaggio da lennynero »

Salve a tutti,
volevo chiedervi un chiarimento su Eclipse e la sua gestione di Ant. Ho sviluppato un software (in java) che con il tempo è diventato piuttosto complesso nel numero di Classi(tra necessarie, ausiliarie e di test), adesso vorrei semplicemente creare un runnable jar, contenente solo le classi di cui ha bisogno l'applicazione per funzionare, per questo motivo ho deciso di adottare Ant, che mi sembra serva al mio scopo. Quando eseguo buildall dal build.xml(è una sorta di makefile vero?) autogenerato mi viene fuori il seguente problema:

Codice: Seleziona tutto

BUILD FAILED
/mnt/data/eclipseWorkspace/vcoop-svn/build.xml:33: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib64/java"
guardando un pò in giro ho scoperto essere un problema di Ant che tenta di usare un tools.jar(contenuto nella JDK) mentre Eclipse usa un suo complier interno. Quello che mi chiedo è: ho veramente bisogno di Ant per creare jar con contenuti specifici? Come mai Ant(che è integrato in Eclipse) non è "complatibile" con il suddetto? Grazie in anticipo per le risposte.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Eclipse+Ant

Messaggio da targzeta »

Beh, jar è un po' come tar, quindi puoi anche crearti uno script che lo invoca sui file che ti interessano.

Eclipse non lo uso, quindi non saprei dirti perché sembra incompatibile.

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Eclipse+Ant

Messaggio da ilmich »

scusa la schiettezza... ma non puoi sviluppare in java se non hai una jdk installata :D
installati quella che viene distribuita con slackware sotto /extra e non avrai nessun problema..

per quanto riguarda la questione delle classi superflue.. o snellisci il progetto.. oppure lo dividi.. perchè ant non è altro che un make scritto in java.. puoi sicuramente decidere cosa compilare oppure no(lo puoi fare anche direttamente tramite eclipse senza usare ant).. pero' per una questione di pensare al futuro.. meglio se perdi un po' di tempo a sistemare il codice

ciau
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Eclipse+Ant

Messaggio da ilmich »

comunque, tramite eclipse puoi scremare cosa esportare in un jar tramite l'apposita interfaccia.
quando fai export -> jar.. ti appare una finestra dove in altro hai una specie di rappresenzatione ad albero con in contenuti del progetto...
si tratta di spuntare le cose che ti servono/non ti servono
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Re: Eclipse+Ant

Messaggio da lennynero »

miklos ha scritto:scusa la schiettezza... ma non puoi sviluppare in java se non hai una jdk installata :D
Ho installato eclipse e non ho avuto bisogno di nessuna jdk esterna per compliare i miei programmi...
miklos ha scritto:installati quella che viene distribuita con slackware sotto /extra e non avrai nessun problema..
provo a fare così e capire se risolve il problema, ma sto valutando di svincolarmi da Ant, visto che non ne ho capito la reale utilità
miklos ha scritto:per quanto riguarda la questione delle classi superflue.. o snellisci il progetto.. oppure lo dividi.. perchè ant non è altro che un make scritto in java..
Ovviamente tutto il codice è già organizzato in packages opportuni, anche le classi "superflue"
miklos ha scritto:puoi sicuramente decidere cosa compilare oppure no(lo puoi fare anche direttamente tramite eclipse senza usare ant)..
non mi interessa nello specifico indicare le classi da complilare e quelle da skippare, ma mi initeressa sapere come fare per dire a Eclipse di crearmi un runnable jar che contenga solo determinati packages(classi), in particolare pernsavo che con Ant potessi creare dei tag riversi per diversi jar(per esempio ho bisogno di creare 2 jar xke il progetto in realtà contiene 2 tool diversi, che hanno quindi diverse "dipendenze"...)

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Eclipse+Ant

Messaggio da 414N »

lennynero ha scritto:
miklos ha scritto:scusa la schiettezza... ma non puoi sviluppare in java se non hai una jdk installata :D
Ho installato eclipse e non ho avuto bisogno di nessuna jdk esterna per compliare i miei programmi...
Non ne avrai avuto bisogno, ma l'errore che riporti non lascia dubbi: ant non trova il compilatore java (javac) nella JAVA_HOME indicata, che probabilmente include la sola jre. O trovi il javac che usa eclipse e cambi la JAVA_HOME in modo che punti lì, oppure installati il jdk che trovi in extra come già suggerito.
Ovviamente, la jre diventa inutile installando il pacchetto jdk, percui la puoi rimuovere tranquillamente.
lennynero ha scritto:non mi interessa nello specifico indicare le classi da complilare e quelle da skippare, ma mi initeressa sapere come fare per dire a Eclipse di crearmi un runnable jar che contenga solo determinati packages(classi), in particolare pernsavo che con Ant potessi creare dei tag riversi per diversi jar(per esempio ho bisogno di creare 2 jar xke il progetto in realtà contiene 2 tool diversi, che hanno quindi diverse "dipendenze"...)
Puoi creare due jar con due MANIFEST diversi, in modo che, quando lanciati, eseguano il main della classe indicata.
Ultima modifica di 414N il sab 1 ott 2011, 14:15, modificato 1 volta in totale.

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Eclipse+Ant

Messaggio da ilmich »

è vero che eclipse ha un 'compilatore' interno..ma se non mi ricordo male non è accessibile tramite applicazioni esterne (come ant).. infatti l'errore che hai ricevuto è abbastanza esplicativo in quanto ti dice che nella JAVA_HOME non c'e' il comando javac (se guardi la directory è quella di sistema dove hai installato la jre.. e non la jdk.. indi per cui ant non ha nulla a che vedere col compilatore di eclipse)
lennynero ha scritto:provo a fare così e capire se risolve il problema, ma sto valutando di svincolarmi da Ant, visto che non ne ho capito la reale utilità
invece è potentissimo... come ti dicevo è l'equivalente del make.. immagina un qualsiasi progetto scritto in c senza il make.
lennynero ha scritto: ma mi initeressa sapere come fare per dire a Eclipse di crearmi un runnable jar che contenga solo determinati packages(classi)
se fai tasto destro sul progetto.. poi esporta.. poi jar.. ti si apre la finestra che ti dicevo dove puoi scegliere i packages da includere nell'archivio jar
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Re: Eclipse+Ant

Messaggio da lennynero »

Grazie a tutti per le risposte,
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... Utilizzando la funzione esporta Jar file mi permette di scegliere le risorse da esportare, mentre se scelgo Runnable Jar non posso farlo. 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?

Avatar utente
teox99
Linux 3.x
Linux 3.x
Messaggi: 738
Iscritto il: ven 25 lug 2008, 14:54
Slackware: 13.37
Desktop: KDE - Xfce
Località: Roma[Eur]
Contatta:

Re: Eclipse+Ant

Messaggio da teox99 »

Questa discussone capita a fagiolo!

qualcuno di voi ha avuto mai esperienza con ECLIPSE + Nasa World Wind?

avete un buon libro veloce e chiaro su come programmare in java usando eclipse ecc... da consigliarmi ?

ho nozioni di base di java

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Eclipse+Ant

Messaggio da 414N »

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?

Avatar utente
teox99
Linux 3.x
Linux 3.x
Messaggi: 738
Iscritto il: ven 25 lug 2008, 14:54
Slackware: 13.37
Desktop: KDE - Xfce
Località: Roma[Eur]
Contatta:

Re: Eclipse+Ant

Messaggio da teox99 »

Codice: Seleziona tutto

In che senso? Devi fare debugging di NWW?
ho caricato nww in eclipse ma non riesco a far partire nessun esempio, neanche da riga di comando usando il file bash predisposto.
che fare?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Eclipse+Ant

Messaggio da 414N »

Io non riesco ad eseguire nessun esempio perché le librerie binarie fornite con worldwind sono tutte a 32 bit, mentre la mia JVM è a 64.
Forse è anche il tuo problema?

Avatar utente
teox99
Linux 3.x
Linux 3.x
Messaggi: 738
Iscritto il: ven 25 lug 2008, 14:54
Slackware: 13.37
Desktop: KDE - Xfce
Località: Roma[Eur]
Contatta:

Re: Eclipse+Ant

Messaggio da teox99 »

anche io ho una 64bit,
su una 32 da riga di comando non và uguale,

comunque leggi qui
http://forum.worldwindcentral.com/showthread.php?t=9487
però non riesco a scaricare il pacchetto
http://java.net/projects/jogl/

puoi darmi una mano?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Eclipse+Ant

Messaggio da 414N »

A me funziona alla perfezione dopo aver scaricato questa versione di jogl e sovrascritto le librerie a 32 bit con quelle nell'archivio.
Dato che il tuo problema c'entra poco con quello originario di lennynero, ti suggerisco di aprire un nuovo thread qualora non riuscissi a risolvere o avessi altre domande nel merito del tuo problema, altrimenti qui andiamo veramente OT.

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Re: Eclipse+Ant

Messaggio da lennynero »

Grazie mille 414N, una info veloce: come posso fare per estrarre o magari anche solo guardare all'interno di un jar da linea di comando?

Codice: Seleziona tutto

jar x jarfile
non funziona...

EDIT: risolto con il comando:

Codice: Seleziona tutto

jar -tf jarfile

Rispondi