【问题标题】:Java receives an error executing Ruby script; Terminal doesn'tJava 收到执行 Ruby 脚本的错误;终端没有
【发布时间】:2012-03-25 15:49:48
【问题描述】:

这是这个问题的一个分叉问题:flac: "ERROR: input file has an ID3v2 tag" (it doesn't)。我已经解决了最初的问题,但并没有解决我遇到的一个问题,所以我将在这里单独介绍它。

我正在使用名为 speech2text 的 Ruby gem 将音频文件转换为(近似的)文本。在命令行上调用它可以正常工作(Mac 终端)。但是,下面的 Java 代码:

String[] cmd = {"speech2text", "tmp/audio/pop-test-audio.wav"};

    ProcessBuilder builder = new ProcessBuilder(cmd);
    builder.redirectErrorStream(true);
    Process process = builder.start();

仅从流程流中接收返回:

/Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_inspector.rb:50:in `initialize': undefined method `first' for nil:NilClass (NoMethodError)
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_splitter.rb:77:in `new'
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_splitter.rb:77:in `initialize'
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_to_text.rb:15:in `new'
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_to_text.rb:15:in `to_text'
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/bin/speech2text:11
from /usr/bin/speech2text:19:in `load'
from /usr/bin/speech2text:19

我对 Ruby 一无所知,因此我通过 Java 轻量级地使用了该库。我真的不知道这里发生了什么,但我知道它在从终端以完全相同的方式执行时有效。有没有人知道是什么原因造成的?

【问题讨论】:

  • 嗯。路径 tmp/audio... 实际上位于 Java Eclipse 项目的文件夹中。它适用于其他程序,但您可能是对的 - Ruby 可能不那么受欢迎。我去看看,谢谢!
  • 好的,完整路径不起作用。我测试了在不正确的路径上运行它,它抛出了一个不同的错误,所以我们可以排除它。

标签: java ruby terminal


【解决方案1】:

您也可以放弃终端并尝试JRuby。它与普通的 Ruby VM 一样快,并且更容易与 Java 集成。

【讨论】:

  • 现在有了一个想法。很棒的图书馆,我去看看。谢谢!
  • 这本身就被证明是困难的。 Speech2text 是一个 gem(我相信),但我对 Ruby 非常不熟悉,我不知道如何编写必要的 Java 代码来执行它。在irb 中,我可以运行示例Ruby 代码,但实际上编写一个Ruby 脚本它无法识别初始导入,因此还有更多的复杂性。令人沮丧!
  • 我找到了一些更好的资源,我不得不说我认为这是要走的路。虽然我无法解决最初的问题,但这个答案让我找到了解决方案。谢谢!
【解决方案2】:

我在尝试运行 jslint.js(对于 node.js)时遇到了类似的问题。实际上我最好先运行 bash,然后以这种方式在我的命令中打印,但我记得即使这样也有问题。

基本上问题在于,如果未加载原本可用的环境设置,则使用 Java 执行操作可能会失败。这可能是一个很难解决的问题。

【讨论】:

  • 好的。我喜欢实际运行终端并通过这种方式泵送东西的想法!多么可怕,有点,但如果它有效,我会尝试它!
  • 好的,事实证明这很困难 - 虽然理论上可行,但我无法弄清楚如何获得进程启动的进程流(如果你明白我的意思),这样可能不是选择。
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多