J’ai commande je voudrais appeler avec Dart.
La commande est sonar-runner
qui fonctionne parfaitement si je l’exécute dans un terminal Ubuntu normal. C’est parce que j’ai édité le PATH
dans le fichier .profile
pour qu’il devienne une commande globale.
Cependant, si j’ai écrit un code Process.start
simple qui devrait déclencher la même chose:
Process.run('sonar-runner', []).then((result) { stdout.write(result.stdout); stderr.write(result.stderr); });
Je reçois comme réponse:
Uncaught Error: ProcessException: No such file or directory Command: sonar-runner Unhandled exception: ProcessException: No such file or directory Command: sonar-runner
Je suppose que c’est une configuration de Ubuntu, car je n’ai aucun problème à exécuter ping localhost
via Dart de la même manière.
Qu’est-ce qui pourrait être faux, de sorte qu’une application tierce ne puisse pas trouver de commandes globales lors de son exécution en tant que nouveau processus?
MISE À JOUR – LA SOLUTION A ÉTÉ TROUVÉE
J’ai trouvé la solution à mon problème, comme décrit ici:
Définir la variable d’environnement à l’aide de Process.start
Pour mon cas particulier, ce code a fonctionné:
Process.run("bash", ["-c", "sonar-runner"]).then((result) { stdout.write(result.stdout); stderr.write(result.stderr); });
Essayez cette approche, run it in a normal Ubuntu terminal
:
Process.run('sonar-runner', [], runInShell: true).then((result) { stdout.write(result.stdout); stderr.write(result.stderr); });
Le problème semble être que “sonar-runner” ne peut pas être trouvé, avez-vous essayé avec le chemin complet?