|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 39
|
[JAVA]creare una libreria .jar con struttura senza la presenza di Main.class
Salve a tutti,
devo creare una libreria di classi in formato .jar . Nessuna delle classi è di tipo main class . Nel seguito mostro l'organizzazione delle directory che deve possedere la libreria : agtk.jar -->agtk -->ag (contiene AG.class)--> parser (contiene AgP.class) ......... |.........|............................................................................. ......... |......... --> agf (contiene AgfError.class)................................. ......... |....................................................................................... ......... |....................................................................................... ......... --> util (contiene FileUtil.class)............................................. Sottolineo che in tale struttura ho inserito, in parentesi tonde, anche la posizione di alcuni file class che devono appartenere alla libreria. Quindi come posso creare una libreria con tale struttura Ciao a tutti swan |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Credo di non aver capito.
Devi semplicemente creare un jar con quella struttura di cartelle???
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Mar 2008
Messaggi: 39
|
Quote:
1)Ho compilato i file sorgenti ottenendo i file FileUtil.class Agferror.class AG.class AgP.class 2) Ho creato su disco la struttura delle directory che dovrà avere la libreria 3) Ho inserito i file . class in tale struttura 4) Da riga di comando mi sono posizionato nella directory "base" contenente le cartelle agtk e util ed ho digitato il comando ----> jar cf agtk.jar . In questo modo sono riuscito a creare l'archivio, tirando dentro tutte le directory agtk-->ag--->parser | | | -->agf | ->util Il problema ora è che, dopo aver importato questo file jar come libreria nel mio progetto che stò sviluppando con Netbeans, non riesce ad importare i package. Difatti per le istruzioni : import agtk.ag o import agtk.agf; oppure import util.*; oppure import agtk.*; mi dice che non esiste il package. Da che dipende? |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Ok ci sono....
le classi devo "rispettare" i package. praticamente come prima istruzione di ogni classe annidata anche solo di un livello devi scrivere la clausola package! es: se la classe AgP.class è in /agtk/ag/parser, devi fare: Codice:
package agtk.ag.parser; import (etc...) public AgP() (etc...)
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 39
|
No, non va. Probabilmente sono errate le istruzioni per la creazione dell'archivio agtk.jar, dato a ben vedere la situazione è:
Codice:
import agtk.agf.*; // va tutto OK, esegue l'import Codice:
import agtk.ag.*; // NO, non riesce a importare il package agtk.ag
// nonostante all'interno dell'archivio sia presente la
// agtk/ag con all'interno i file .class
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
la direttiva package la devi dare ad ogni classe che non risiede nella directory root ("./")
per AgP: Codice:
package agtk.ag.parser; Codice:
package agtk.ag; Codice:
package agtk; Codice:
package util;
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 39
|
xxxx
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 39
|
Fatto come mi hai detto e...
Grazie MILLE Oceans |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:31.




















