4

J'essaie d'exécuter un programme (convertir à partir de ImageMagick, pour être précis) dont le dossier parent existe sur le chemin. Ergo, quand je cours convert à partir de la ligne de commande, il exécute la commande. Ce qui suit, cependant, échoue:commons-exec: Exécuter un programme sur le système PATH?

String command = "convert" 
CommandLine commandLine = CommandLine.parse(command); 
commandLine.addArgument(...) 
... 
int exitValue = executor.execute(commandLine); 

Si je précise le chemin complet de l'exécutable de conversion (C:\Program files\...) alors ce code fonctionne. Si je ne fais pas cela, une exception est levée avec la valeur de sortie 4.

Comment faire pour que commons-exec reconnaisse le chemin du système?

Répondre

7

J'ai déjà rencontré des problèmes comme ceux-ci, où le système défini PATH n'est pas ce que le processus Java voit. Comme une façon de déboguer cela, vous pouvez imprimer ce que le processus Java considère comme le chemin variable env en utilisant:

EnvironmentUtils.getProcEnvironment(); 

Ce qui vous donnera une carte et vous pouvez regarder pour voir si Java peut voir la variable de chemin. Si ce n'est pas là, la prochaine étape consistera à comprendre pourquoi vous ne pouvez pas le voir.

Si elle est là, je tenterais l'exécution de votre commande excutor.execute comme suit:

int exitValue = executor.execute(commandLine, EnvironmentUtils.getProcEnvironment()); 
Questions connexes