PDA

View Full Version : [JAVA]creare una libreria .jar con struttura senza la presenza di Main.class


swanelvis
15-09-2008, 10:03
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 :muro: ? Ricordo che non vi è nessuna delle classi di tipo Main.:help:
Ciao a tutti swan

Oceans11
15-09-2008, 15:04
Credo di non aver capito.

Devi semplicemente creare un jar con quella struttura di cartelle???

swanelvis
15-09-2008, 15:37
Credo di non aver capito.

Devi semplicemente creare un jar con quella struttura di cartelle???

Si. In effetti sono riuscito a creare il jar con questa struttura di cartelle seguendo i seguenti passi:

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?

Oceans11
15-09-2008, 15:43
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:

package agtk.ag.parser;

import (etc...)

public AgP() (etc...)

swanelvis
15-09-2008, 15:59
No, non va. Probabilmente sono errate le istruzioni per la creazione dell'archivio agtk.jar, dato a ben vedere la situazione è:



import agtk.agf.*; // va tutto OK, esegue l'import



mentre




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



Qual'è il problema?:muro: :muro: :muro:

Oceans11
15-09-2008, 16:29
la direttiva package la devi dare ad ogni classe che non risiede nella directory root ("./")


per AgP: package agtk.ag.parser;

per AG: package agtk.ag;

per AgfError: package agtk;

per FileUtil: package util;

swanelvis
16-09-2008, 10:12
xxxx

swanelvis
16-09-2008, 10:13
Fatto come mi hai detto e...:D ...il problema è stato risolto . La libreria .jar è stata creata correttamente e funziona alla perfezione.

Grazie MILLE Oceans ;)