5

我有命令我想用 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 配置的东西,因为我ping localhost以同样的方式通过 Dart 运行没有问题。

可能是什么问题,以至于第三方应用程序在将其作为新进程运行时无法找到全局命令?

更新 - 找到解决方案

我找到了解决问题的方法,如下所述:

使用 Process.start 设置环境变量

对于我的具体情况,此代码有效:

Process.run("bash", ["-c", "sonar-runner"]).then((result) {
  stdout.write(result.stdout);
  stderr.write(result.stderr);
});
4

2 回答 2

3

试试这种方法run it in a normal Ubuntu terminal

Process.run('sonar-runner', [], runInShell: true).then((result) {
  stdout.write(result.stdout);
  stderr.write(result.stderr);
});
于 2014-08-29T13:21:50.487 回答
1

问题似乎是找不到“声纳跑步者”,您是否尝试过完整路径?

于 2014-08-29T12:23:39.630 回答