Ho una struttura semplice: un file jar di dati che contiene un batch di dati e un file jar di servizio, che esegue un servizio utilizzando i dati. Per semplificare la sostituzione dei dati, li ho separati e classpath di service.jar contiene la directory in cui si trova data.jar.Accesso alle risorse da un altro file jar
All'interno di service.jar, utilizzo getResource per caricare i file di dati. Funziona se i file di dati sono direttamente all'interno della cartella, ma falliscono quando si trovano all'interno di data.jar;
Questo fallisce:
all
+ globalclasspath
| + data.jar
| + mine.properties
+ daemons
+ service.jar
jsvc -cp globalclasspath:daemons/service.jar (...)
MyClass.class.getClassLoader().getResource("mine.properties"); // <-- null
Ma questo funziona:
all
+ globalclasspath
| + mine.properties
+ daemons
+ service.jar
jsvc -cp globalclasspath:daemons/service.jar (...)
MyClass.class.getClassLoader().getResource("mine.properties"); // <-- not null
Io non voglio cambiare il classpath (a meno che non posso cambiare a qualcosa di generico, che non dipende dalla nome del file jar dei dati), ma sto bene cambiando la stringa getResource (ho provato /data/mine.properties e /data.jar/mine.properties senza alcun risultato). C'è un cambiamento che posso fare in modo che le risorse possano essere caricate dall'interno del barattolo?
Siamo spiacenti, In realtà sto usando 'getResourceAsStream' già (ho scritto' getResource' perché non ero consapevole di qualsiasi differenza e sembrava più semplice) – Dave