2 votes

Ajout de plusieurs valeurs à un environnement dans le registre et récupération dans une application Java

J'utilise procrun pour exécuter une application java en tant que service.

J'ai utilisé ce qui suit pour définir le chemin :

set PATH="dir1;dir2;%PATH%"
procrun.exe //US//%SERVICE_NAME% ++Environment PATH=%PATH%

qui met à jour la valeur de l'environnement dans le registre comme :

enter image description here

Mais, dans mon application Java, lorsque j'essaie d'obtenir la valeur de l'attribut PATH :

System.getenv("PATH")

Je n'obtiens que la première valeur (i.e. dir1 dans le cas ci-dessus). Si je fixe le chemin d'accès à dir2;dir1;%PATH% j'obtiens seulement dir2)

Est-ce que je ne récupère pas de la bonne façon ou est-ce que je ne règle pas de la bonne façon ?

0voto

Piotr P. Karwasz Points 3273

Votre problème est dû à l'absence de guillemets dans le fichier --Environment option :

Liste des variables d'environnement qui seront fournies au service sous la forme clé=valeur. Elles sont séparées par des caractères # ou ;. Si vous devez intégrer un caractère # ou ; dans une valeur, placez-le entre guillemets simples.

(cf. Documentation Procrun ).

Depuis que Windows étend %PATH% à une liste de ; -vous devez utiliser des chemins séparés :

procrun.exe //US//%SERVICE_NAME% ++Environment 'PATH=%PATH%'

o PATH='%PATH' si vous préférez. Le caractère guillemet simple est supprimé de la chaîne de paramètres après l'avoir décomposée en une chaîne de caractères. ; -liste de paramètres séparés (cf. code source ). Par conséquent, il peut y avoir un problème si vous avez des guillemets simples dans le nom d'un dossier.

Editar procrun accepte également les citations par le biais de guillemets doubles (qui ne sont pas dépouillés) et vos PATH contient des guillemets, mais la variable magie de cmd.exe les dépouille.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X