我有命令我想跟Dart打电话。
命令是sonar-runner
,如果我在普通的Ubuntu终端中运行它,它可以正常工作。这是因为我编辑了PATH
文件中的.profile
,因此它成为全局命令。
但是,如果我写了一个简单的Process.start
代码,它应该触发同样的事情:
Process.run('sonar-runner', []).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
我得到了回复:
Uncaught Error: ProcessException: No such file or directory
Command: sonar-runner
Unhandled exception:
ProcessException: No such file or directory
Command: sonar-runner
我猜这是一个Ubuntu配置的东西,因为我以同样的方式通过Dart运行ping localhost
没问题。
可能有什么问题,以便第三方应用程序在将其作为新进程运行时无法找到全局命令?
更新 - 已找到解决方案
我找到了问题的解决方案,如下所述:
Set Environment variable using Process.start
就我的具体情况而言,此代码有效:
Process.run("bash", ["-c", "sonar-runner"]).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
答案 0 :(得分:3)
尝试这种方法run it in a normal Ubuntu terminal
:
Process.run('sonar-runner', [], runInShell: true).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
答案 1 :(得分:1)
问题似乎是“声纳 - 跑步者”#39;无法找到,你试过完整的路径吗?