Newsgroup: it.comp.java
Titolo: classi contenute in una libreria

ciao a tutti
ho la necessità di instanziare tutte le classi contenute in una mia
libreria, delle quali quindi non ne conosco il nome (le instanzierò
tutte perchè dovranno avere tutte lo stesso tipo di costruttore)
conosco quindi solo il nome (e non il path) della libreria (es.:
miopackage.oggetti.dinamici)
per le instanze non ci sono problemi perchè per farlo posso usare 
Class miaclasse = Class.forname(libreria+nomeclasse);
.....
ma non so come poter leggere il contenuto di una libreria (che è
comunque all'interno del classpath)
qualcuno ha qualche idea su come farsi tornare il path completo delle
librerie viste da java (così potrei leggere il contenuto della
directory e cercare i .class che saranno quindi i miei nomi classi da
instanziare) ?
o qualche altra idea migliore ?
ciao grazie

 comunque all'interno del classpath)
Ovvero? Cosa intendi per "contenuto"?

...

ciao Vincent, è un po che non ti sentivo
(solo te potevi provare a ripondere a questo post)
ben ritrovato
per la precisione ho questa necessità
distribuisco la mia applicazione (GPL) in un jar
quindi non so in quale path è installato (è non vorrei saperlo)
ovviamente il progetto è composto da tante librerie / directory
myfinance.scrivania
myfinance.tabelle.fisiche
ecc..
ed ogni libreria contiene molte classi
la libreria myfinance.tabelle.fisiche contiene tutte le classi con cui
accedo alle tabelle fische del database (mysql)
ogni volta che devo accedere ad una tabella instanzio la specifica
classe (che descrive la tabelle) chiedendole dei servizi di I/O
ora ho fatto una funzione di servizio nella applicazione per la quale
ho la necessità di scorrermi tutte le tabelle fisiche, quindi per come
sono organizzato dovrei instanziare tutte classi tabella per quindi
chiedere ad ognuna il servizio di I/O che mi serve
quello che NON vorrei fare è dove implementare questa classe di
servizio ad ogni nuova tabella che creerò in futuro (dichiarando ogni
nuova classe che aggiungerò nella myfinance.tabelle.fisiche)
quindi vorrei riuscire a sapere quali classi contiene la libreria
myfinance.tabelle.fisiche per poter quindi ciclare ed instanziarle una
ad una (facendo appunto una istanza 'for name').
non vorrei scorrermi la directory myfinance.tabelle.fisiche perchè per
package è contenuta in un jar e quindi immagino avrei qualche problema
pensavo fosse più semplice ottenere da java vm l'elenco degli oggetti
contenuti in una libreria ma per ora non ci sono riuscito; infatti ho
trovato un metodo con cui avere l'elenco delle librerie viste dal java
(classpath) ma tale oggetto non mi torna a sua volta un oggetto della
singola libreria che posso interrogare per chiedergli che figli
contiene
a te vien qualche altra idea su come poter fare ?
ciao grazie 
Luciano
-----------------
progetto MyFinance
www.myfinance.it
in...@myfinance.it

Prova
http://sadun-util.sourceforge.net/api/org/sadun/util/ClassPackageExplorer.html
Nota che la sua implementazione
http://sadun-util.sourceforge.net/api/org/sadun/util/SimpleClassPackageExplorer.html
usa un
http://sadun-util.sourceforge.net/api/com/deltax/util/JDK12ClassFileFinder.html
quindi valgono le limitazioni di quest'ultimo.

...

ciao Cristiano
ho scaricato il org.sadun.util_1.11.0.zip ed è enorme
credo che le classi che mi interessano siano solo alcune del
source\org\sadun\util
ma non vorrei incorporarle nel mio pakage jar
infatti, anche il mio è un gpl, credo non possa incorporare le tue
classi lgpl (e comunque non vorrei farlo nemmeno se potessi)
quindi ti chiedo se hai un jar ah hoc con le sole classi del tuo
package explorer o lo debba creare io in modo da poterlo distribuire
assieme al mio di jar
che ne pensi ?
ciao

L'unico package apposito e' pack - per gli altri, semplicemente compila
solo le classi che ti interessano, oppure usa lo stesso pack per
"estrarle" dal megajar.
Non ha importanza se non sono in un jar separato o no..