2017-10-20 36 views
0

je la structure de répertoire suivantJAR Class-Path manifeste, utilisez le dossier au lieu de pot

--conf 
| | 
| --foo.properties 
| 
--lib 
    | 
    --application.jar 

Dans le fichier MANIFEST.mf de mon application.jar Je l'entrée suivante: Class-Path: ../conf/

Dans la classe à l'intérieur jar (appelé par la principale méthode de pot) je tente de charger le fichier foo.properties en tant que ressource en utilisant le code suivant classpath

URL properties = this.getClass().getClassLoader().getResource("foo.properties"); 

Cependant, la ressource n'a pas pu être trouvée à partir du classpath. Pourquoi l'attribut Class-Path ne fonctionne-t-il pas dans le bocal? Ai-je mal compris comment cela affecte le classpath du classloader de l'application?

Je suis en cours d'exécution de l'application avec la commande suivante

java -jar application.jar

Répondre

1

Il devrait fonctionner. Vous ne savez pas si votre MANIFEST.mf est correctement formaté. J'ai généré le mien avec Maven et ça marche. Voici comment mon MANIFEST.mf ressemble,

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: john.doe 
Class-Path: ../conf/ 
Created-By: Apache Maven 3.3.9 
Build-Jdk: 1.8.0_92 
Main-Class: com.basaki.misc.clazzpath.FindResource 

Vous trouverez un exemple complet here.