Dans ma candidature, je charge des ressources de cette manière:
WinProcessor.class.getResource("repository").toString();
et cela me donne:
file:/root/app/repository (and I replace "file:" with empty string)
Cela fonctionne bien lorsque j'exécute mon application de l'EDI, mais lorsque j'exécute le pot de ma candidature:
Java -jar app.jar
Le chemin devient:
jar:/root/app.jar!/repository
y a-t-il un moyen de résoudre ce problème?
Je vais utiliser le nom du directeur du "référentiel" afin de créer ceci:
ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryString, null);
De la même manière, je vais obtenir un nom de fichier (au lieu d'un dir) et je l'utiliserai de cette façon:
System.setProperty("javax.net.ssl.trustStore", fileNameString)
On dirait que vous essayez ensuite de charger la ressource en utilisant un FileInputStream
ou quelque chose comme ça. Ne faites pas cela: au lieu d'appeler getResource
, appelez getResourceAsStream
et lisez les données de cela.
(Vous pouvez plutôt charger les ressources de l'URL, mais appeler getResourceAsStream
est un peu plus pratique.)
EDIT: Ayant vu votre réponse mise à jour, il semble que d'autres bits de code s'appuient sur les données étant dans un fichier unique physique dans le système de fichiers. La réponse ne doit donc pas la regrouper dans un fichier JAR en premier lieu. Vous pourrait Vérifiez si c'est dans un fichier séparé et s'il ne l'extrait pas dans un fichier temporaire, mais c'est assez Hacky IMO.
Construire un URL
, vous pouvez ensuite charger une ressource (même dans un fichier JAR) à l'aide de la méthode openStream
Méthode.