AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

package fuori e dentro i jar

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
matish
Guest





PostPosted: Wed Feb 25, 2004 11:40 pm    Post subject: package fuori e dentro i jar Reply with quote



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





PostPosted: Thu Feb 26, 2004 12:11 am    Post subject: Re: package fuori e dentro i jar Reply with quote



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





PostPosted: Thu Feb 26, 2004 12:26 am    Post subject: Re: package fuori e dentro i jar Reply with quote



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





PostPosted: Thu Feb 26, 2004 12:43 am    Post subject: Re: package fuori e dentro i jar Reply with quote

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





PostPosted: Thu Feb 26, 2004 2:05 pm    Post subject: Re: package fuori e dentro i jar Reply with quote

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 Smile.

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





PostPosted: Thu Feb 26, 2004 2:40 pm    Post subject: Re: package fuori e dentro i jar Reply with quote

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 Smile
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





PostPosted: Thu Feb 26, 2004 3:26 pm    Post subject: Re: package fuori e dentro i jar Reply with quote

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 Smile

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
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.