 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
matish Guest
|
Posted: Wed Feb 25, 2004 11:40 pm Post subject: package fuori e dentro i jar |
|
|
ciao a tutti,
mi trovo in questa situazione:
ho una certa quantità di package, diciamo:
a
a.b
a.b.c
a.b.d
a.b.e
in un jar file. Chiamiamolo primo.jar.
Poi ho bisogno di mettere il package
a.b.e.f
Che quindi è un sottopackage di a.b.e in un altro jar file, secondo.jar.
Come faccio a fare in modo che una classe del primo file, ad esempio
contenuta in a.b possa accedere alle classi di a.b.e.f?
Non so il problema è chiaro, dovrei aggiugnere al classpath tutti e due i
file, ma non posso rispettare la gerarchia delle directory visto che tutte
le dir sono contenute in primo.jar!
Li metto nella stessa directory e gioco con i manifest in modo che le classi
sembrino al posto giusto? Boh! :)
Grazie!
--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it
|
|
| Back to top |
|
 |
gnazio Guest
|
Posted: Thu Feb 26, 2004 12:11 am Post subject: Re: package fuori e dentro i jar |
|
|
matish <matish (AT) toglimipurefreemail (DOT) it> ha scritto:
| Quote: | ciao a tutti,
mi trovo in questa situazione:
ho una certa quantità di package, diciamo:
[CUT]
Come faccio a fare in modo che una classe del primo file, ad esempio
contenuta in a.b possa accedere alle classi di a.b.e.f?
Non so il problema è chiaro, dovrei aggiugnere al classpath tutti e due i
file, ma non posso rispettare la gerarchia delle directory visto che tutte
le dir sono contenute in primo.jar!
[CUT] |
Ovviamente dovrai avere entrambi i jar nel classpath.
Ma nella classe del primo jar hai messo l'import corretto?
Inviato da www.mynewsgate.net
|
|
| Back to top |
|
 |
matish Guest
|
Posted: Thu Feb 26, 2004 12:26 am Post subject: Re: package fuori e dentro i jar |
|
|
gnazio wrote:
| Quote: | Ovviamente dovrai avere entrambi i jar nel classpath.
Ma nella classe del primo jar hai messo l'import corretto?
|
Non l'ho ancora fatto, volevo solo capire come fare.
La faccio più facile. Mettiamo che io abbia questa classe:
package a.b.c;
import a.b.c.d.*;
public class Uno {
public static void main(String[] args) {
new Due().metodo();
}
}
------
package a.b.c.d;
public class Due {
public void metodo() {
}
}
nel filesystem ho:
../a/b/c/Uno.class
../a/b/c/d/Due.class
creo un jar: primo.jar ci metto:
../a/b/c/Uno.class
e come classpath metto .
poi credo secondo.jar ci metto:
d/Due.class
e come classpath metto ../../../
alla fine di tutto questo casino ho:
../primo.jar
../a/b/c/secondo.jar
(visto che secondo.jar ingloba d)
se faccio:
java -classpath primo.jar:a/b/c/secondo.jar a.b.c.Uno
che speranza ho di vedere il mio codice eseguito correttamente? E come
dovrei fare?
--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it
|
|
| Back to top |
|
 |
gnazio Guest
|
Posted: Thu Feb 26, 2004 12:43 am Post subject: Re: package fuori e dentro i jar |
|
|
matish <matish (AT) toglimipurefreemail (DOT) it> ha scritto:
| Quote: | Non l'ho ancora fatto, volevo solo capire come fare.
La faccio più facile. Mettiamo che io abbia questa classe:
|
[CUT]
| Quote: | poi credo secondo.jar ci metto:
d/Due.class
e come classpath metto ../../../
|
Da ./a/..
jar cvf secondo.jar ./a/b/c/d/Due.class
| Quote: | alla fine di tutto questo casino ho:
../primo.jar
../a/b/c/secondo.jar
alla fine avrai |
../primo.jar
../secondo.jar
| Quote: | (visto che secondo.jar ingloba d)
se faccio:
java -classpath primo.jar:a/b/c/secondo.jar a.b.c.Uno
e fai |
java -cp primo.jar:secondo.jar a.b.c.Uno
| Quote: | che speranza ho di vedere il mio codice eseguito correttamente? E come
dovrei fare?
Forse così è un po' meno incasinato! |
Inviato da www.mynewsgate.net
|
|
| Back to top |
|
 |
Cristiano Sadun Guest
|
Posted: Thu Feb 26, 2004 2:05 pm Post subject: Re: package fuori e dentro i jar |
|
|
matish <matish (AT) toglimipurefreemail (DOT) it> wrote in news:J2b%b.1700$mt1.1583
@tornado.fastwebnet.it:
| Quote: | Non l'ho ancora fatto, volevo solo capire come fare.
|
Se capisco bene, non c'e' problema. Al classloader di sistema non interessa
particolarmente dove una directory stia, ma solo che la corrispondenza
directory/package sia corretta.
Puoi addirittura dividere lo stesso package in due jar, e anche avere
classi duplicate (anche se e' uno dei modi migliori di garantirsi un futuro
mal di testa, dato che la classe usata dipende dall'ordine in cui i jar
sono dichiarati in classpath .
Quindi, per esempio,
jar1: contiene a.b (cioe' ha una "zip directory" a/b che "contiene" le
classi del package a.b)
jar2: contiene a.b.c (cioe' ha una "zip directory" a/b/c che "contiene" le
classi del package a.b.c)
--
You dont know what to do when you dont know what you're doing.
http://space.tin.it/computer/csadun
|
|
| Back to top |
|
 |
matish Guest
|
Posted: Thu Feb 26, 2004 2:40 pm Post subject: Re: package fuori e dentro i jar |
|
|
Cristiano Sadun wrote:
| Quote: | Quindi, per esempio,
jar1: contiene a.b (cioe' ha una "zip directory" a/b che "contiene" le
classi del package a.b)
jar2: contiene a.b.c (cioe' ha una "zip directory" a/b/c che "contiene" le
classi del package a.b.c)
|
E' esattamente quello che vorrei fare, perché immagino una struttura del
genere:
../applicazione/filePrincipale.jar
../applicazione/plugin/plugin1.jar
../applicazione/plugin/plugin2.jar
....
../applicazione/plugin/pluginN.jar
e pensavo di chiamare con una cosa tipo:
java -cp ./applicazione/filePrincipale.jar:./applicazione/plugin/*.jar
MainClass
Ti prego dimmi che posso mettere *.jar nel classpath, altrimenti non so come
fare
Dovrei poter caricare i jar dinamicamente come le librerie in codice nativo.
Come si fa?
Grazie!
--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it
|
|
| Back to top |
|
 |
Cristiano Sadun Guest
|
Posted: Thu Feb 26, 2004 3:26 pm Post subject: Re: package fuori e dentro i jar |
|
|
matish <matish (AT) toglimipurefreemail (DOT) it> wrote in
news:%yn%b.2601$mt1.380 (AT) tornado (DOT) fastwebnet.it:
| Quote: | java -cp ./applicazione/filePrincipale.jar:./applicazione/plugin/*.jar
MainClass
Ti prego dimmi che posso mettere *.jar nel classpath, altrimenti non
so come fare
|
Er.. esattamente come hai scritto sopra? :)
| Quote: | Dovrei poter caricare i jar dinamicamente come le librerie in codice
nativo. Come si fa?
|
Questo e' un problema diverso. In generale puoi usare un classloader
dinamico (ad esempio, http://sadun-
util.sourceforge.net/api/org/sadun/util/DynamicClassLoader.html) ma siccome
ogni classloader e' oggidi' associato ad un dominio di sicurezza la cosa
puo' portare a complicazioni.
Comuqnue val la pena provare: mettin l'applicazione + le necessarie
interfacce implementate dai plugin in un jar, e usi un classloader dinamico
per caricare i plugin stessi.
--
You dont know what to do when you dont know what you're doing.
http://space.tin.it/computer/csadun
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|