l'ajout de répertoire relatif au chemin de classe java et à l'aide du chargeur de classe().getResourceAsStream(“”)
Est-il possible d'ajouter un répertoire relatif (c'est à dire, foo/bar/plugh) au chemin de classe java et l'utilisation
InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");
Pour aller chercher de foo/bar/plugh/xyzzy.propriétés?
Mon classpath ressemble à ceci:
foo.jar;foo/bar/plugh;xyz.jar
Et je suis en mesure d'utiliser les classes et les ressources de foo et xyz pots, mais pas de la plugh répertoire. Dans ces cas, in
est toujours null.
Je ne peux pas obtenir que cela fonctionne et je ne suis pas sûr si ce est juste pas pris en charge, je suis absent quelque chose de subtil ou si je fais quelque chose de mal. Ai-je besoin d'utiliser un chemin absolu?
Comment avez-vous mis ce chemin de classe? Comme l'exemple suivant? java -classpath foo.jar;foo/bar/plugh;xyz.jar
OriginalL'auteur sal | 2009-05-09
Vous devez vous connecter pour publier un commentaire.
Peut-être que je suis l'incompréhension de ce que vous essayez de le faire, mais si vous avez un dossier dans votre classpath, cela signifie que tous les fichiers d'en-dessous, il devrait être dans le classpath. Si pas, vous pouvez toujours passer chaque .fichier de propriétés sur le chemin de classe.
Mais de toute façon, depuis le fichier/dossier qui contient le fichier est dans le classpath, vous devez juste être capable de faire:
Et depuis "foo/bar/plugh" est dans le classpath, l'un des lieux, il va chercher xyz.les propriétés dans "foo/bar/plugh".
La seule chose que je peux penser est que si le chemin d'accès relatif que vous avez dans votre classpath est en train d'être résolu sur la base d'où le programme est exécuté. Par exemple, si j'ai le fichier de commandes dans le C:\myapp\bin répertoire de la "base" chemin d'accès peut être C:\myapp\bin, pas C:\myapp. Si c'est le cas, il serait tentant de résoudre "C:\myapp\bin\foo\bar\plugh\xyz.properties".
Il a travaillé pour moi avec le chemin absolu du répertoire. Mais c'est très étrange parce que j'ai essayé avant avec le code: <code>InputStream in = getClassLoader().getResourceAsStream("xyzzy.les propriétés"); </code> Quelle est la différence entre ces deux méthodes? Merci.
Est-il possible d'obtenir cette propriétés de la méthode: ResourceBundle.getBundle("xyz"); Merci.
Je pense que tant que "xyz.les propriétés" est dans votre classpath, il doit obtenir ramassé avec getBundle()
OriginalL'auteur Alex Beardsley