当命令在 Ubuntu 终端中运行时,为啥 Dart 的“Process.start”不能执行 Ubuntu 命令?
Posted
技术标签:
【中文标题】当命令在 Ubuntu 终端中运行时,为啥 Dart 的“Process.start”不能执行 Ubuntu 命令?【英文标题】:Why can't Dart's "Process.start" execute an Ubuntu command when the command works in Ubuntu terminal?当命令在 Ubuntu 终端中运行时,为什么 Dart 的“Process.start”不能执行 Ubuntu 命令? 【发布时间】:2014-08-29 11:54:53 【问题描述】:我有命令我想用 Dart 调用。
命令是sonar-runner
,如果我在普通的 Ubuntu 终端中运行它,它可以完美运行。这是因为我在.profile
文件中编辑了PATH
,所以它变成了一个全局命令。
但是,如果我写了一个简单的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);
);
【问题讨论】:
您是否像直接启动sonar-runner
一样从同一个 shell/终端启动 Dart 脚本?
我找到了解决问题的方法,如下所述:***.com/questions/13938217/…
你做了什么,把路径传给Process.run()
?
我已经更新了我的原始帖子以包括:)
@Claudiod'Angelis 我尝试使用 runInShell 和所有其他可选参数,但它们都不起作用。不过确实如此。
【参考方案1】:
试试这个方法run it in a normal Ubuntu terminal
:
Process.run('sonar-runner', [], runInShell: true).then((result)
stdout.write(result.stdout);
stderr.write(result.stderr);
);
【讨论】:
【参考方案2】:问题似乎是找不到'sonar-runner',你试过完整路径吗?
【讨论】:
以上是关于当命令在 Ubuntu 终端中运行时,为啥 Dart 的“Process.start”不能执行 Ubuntu 命令?的主要内容,如果未能解决你的问题,请参考以下文章
当程序在 IntelliJ 中运行时,为啥我会收到 SSLHandshakeException 作为 JAR?
为啥我的图像出现在 Android Studio 设计视图中,但在手机中运行时却没有?
为啥我的代码在线程 6:NSOperationQueue 中运行时会崩溃?