J'ai une application java, et le fichier log4j.properties est dans src/com/my/path/props. Lors de la compilation, il est copié dans classes/com/my/path/propsComment obtenez-vous le chemin du fichier pour le fichier lorsque le répertoire de l'utilisateur change?
Le fichier est chargé via PropertyConfigurator.configureAndWatch (user.dir + "/classes/com/my/path/props/log4j.properties").
Tout cela fonctionne normalement, bien que ce ne soit pas idéal en raison de l'utilisation de user.dir (mais je ne connais pas un autre moyen de référencer un fichier par rapport au répertoire de démarrage de "l'application"). Le problème se manifeste lors de l'exécution de cette application à l'aide d'un wrapper Service NT. Quand cela est fait de cette façon, le fichier user.dir passe du répertoire racine de l'application à l'emplacement du fichier exe de l'encapsuleur NTService.
Ma question est: Quelle est la manière appropriée d'obtenir la représentation du chemin d'accès au fichier String du fichier log4j.properties dans mon répertoire classes/com/my/path/props /? Je me rends compte que cela se décomposerait complètement si le fichier d'accessoires était dans un pot; mais dans ce cas, ce n'est pas et est simplement un fichier sur le système de fichiers.
J'ai essayé un nouveau fichier (this.getClass(). GetClassLoader(). GetResource ("com/mon/chemin/props/log4j.properties"). GetURI()). GetAbsolutePath(), mais cela échoue car en production, le chemin d'accès au fichier est en fait un chemin UNC et renvoie par conséquent une exception "URI a un composant d'autorité".
Comment d'autres personnes font face à ce problème?
Merci.
Je suis confus parce que vous avez dit le fichier est copié dans le classpath (c'est-à-dire dans le répertoire classes), mais vous mentionnez "user.dir". Si vous chargez le fichier à partir du classpath, "user.dir" n'est pas pertinent. D'où voulez-vous le fichier chargé? – SingleShot
est copié dans le répertoire classes à la suite du processus de compilation normal d'Eclipse. Donc, il arrive que sur le déploiement, le fichier prop vit dans le répertoire des classes –
OK, je vais essayer de répondre ... – SingleShot