ciao a tutti
è la prima volta che scrivo. spesso ho trovato soluzioni a problemi che avevo, ma questo non riesco a risolverlo.
spero mi possiate dare una mano
dunque sto facendo un progetto in java tramite netbeans. utilizzo delle librerie esterne, più tre file da cui l'applicazione legge le configurazioni per l'esecuzione del programma.
in netbeans le librerie e la cartella contenente i tre file di configurazione le ho importate direttamente in libraries (in pratica viene impostato il classpath automaticamente per la rilevazione delle librerie e dei file).
se eseguo da netbeans, l'applicazione funziona perfettamente.
a questo punto ho l'esigenza di "distribuirla", in pratica di creare un unico file .jar eseguibile. in netbeans posso usare la comoda funziona "clean and build", che mi crea una cartella
di nome dist con all'interno il mio Applicazione.jar, e un'altra cartella lib contenente le librerie esterne.
nel caso in cui nella cartella libraries, oltre ai file jar della mia libreria esterna, utilizzo altri tipi di file o cartelle (nel mio caso la cartella "conf" contenente i tre file di configurazione), la funzione "clean and build" mi crea la cartella
dist solamente con Applicazione.jar, senza creare la cartella lib con all'interno le librerie e la cartella con i file di configurazione. sempre netbeans mi dice che in questo caso le librerie esterne (jar e cartella con file di configurazione) vanno inseriti manualmente nella cartella lib di dist.
quindi manualmente ho copiato tutti i jar relativi alla libreria esterna più la cartella contenente i file di configurazione.
TEORICAMENTE il tutto ora dovrebbe funzionare, semplicemente lanciando il file Applicazione.jar.
PRATICAMENTE non mi rileva la cartella contenente i file di configurazione (i jar delle librerie invece vengono riconosciuti perfettamente).
un esempio per spiegare meglio:
se in netbeans elimino da "libraries" la cartella contenente i file di configurazione, e provo ad eseguire l'applicazione, l'errore che mi da è il seguente
Error during library initalization: Initialization failed! Please add configuration files to your classpath or set properly SDK_HOME environment variable
giustamente non rileva i file di configurazione e mi da errore.
se provo a lanciare la mia "distribuzione" da terminale (Applicazione.jar contenuto nella cartella dist con relativa cartella lib contenente librerie e cartella con file di configurazione),
ottengo lo stesso errore. In pratica non riesce a riconoscere la cartella contenente i file di configurazione, nonostante siano correttamente inseriti nella cartella lib/config
ho provato a vedere il MANIFEST.MF della "distribuzione", e il contenuto è il seguente:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 14.3-b01-101 (Apple Inc.)
Main-Class: conf.Diretto
Class-Path: lib/swing-layout-1.0.3.jar lib/activation.jar lib/FastInfo
set.jar lib/http.jar lib/jaxb-api.jar lib/jaxb-impl.jar lib/jaxb-xjc.
jar lib/jaxws-api.jar lib/jaxws-rt-patch.jar lib/jaxws-tools.jar lib/
jsr173_api.jar lib/jsr181-api.jar lib/jsr250-api.jar lib/log4j-1.2.15
.jar lib/mimepull.jar lib/resolver.jar lib/saaj-api.jar lib/saaj-impl
.jar lib/sdkNext-1_0.jar lib/stax-ex.jar lib/streambuffer.jar lib/woo
dstox.jar lib/config/
X-COMMENT: Main-Class will be added automatically by build
quindi effettivamente nel classpath la cartella lib/config contenente i file di configuazione è impostata correttamente, ma nonostante questo non rileva i file e di conseguenza mi da errore.
sinceramente non capisco quale sia il problema. ho provato anche a modificare il MANIFEST indicando esplicitamente i nomi dei file di configurazione nel classhpath
lib/config/log4j.properties lib/config/sdk_binding.xml lib/config/sdk_services.xml
ma ho lo stesso problema.
riassumendo il problema è come far leggere quei tre file alla mia applicazione finale. ho eseguito le istruzioni di netbeans, provato a cercare su internet soluzioni ma non ho concluso nulla.