Une chose d'abord: techniquement, ce n'est pas un fichier. Le JAR/WAR est un fichier, ce que vous cherchez est une entrée dans une archive (une ressource AKA).
Et parce que ce n'est pas un fichier, vous devez l'obtenir comme InputStream
Si le JAR/WAR est sur le classpath, vous pouvez le faire SomeClass.class.getResourceAsStream("/path/from/the/jar/to/maven.properties")
, où SomeClass
est une classe à l'intérieur que JAR/WAR
// these are equivalent:
SomeClass.class.getResourceAsStream("/abc/def");
SomeClass.class.getClassLoader().getResourceAsStream("abc/def");
// note the missing slash in the second version
Sinon, vous devrez lire le comme JAR/WAR ceci:
JarFile jarFile = new JarFile(file);
InputStream inputStream =
jarFile.getInputStream(jarFile.getEntry("path/to/maven.properties"));
Maintenant, vous voulez probablement charger le InputStream
dans un objet Properties
:
Properties props = new Properties();
// or: Properties props = System.getProperties();
props.load(inputStream);
Ou vous pouvez lire le InputStream
à une chaîne. Cela est beaucoup plus facile si vous utilisez une bibliothèque comme
+1 pour 'ClassLoader.getSystemResourceAsStream()' ne savait pas celui-là –