首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby 1.9 Kernel::系统在Windows上不工作

Ruby 1.9 Kernel::系统在Windows上不工作
EN

Stack Overflow用户
提问于 2010-10-12 13:57:40
回答 2查看 214关注 0票数 1

我在ruby脚本中使用了system "java -cp xxx.jar",它在Mac上运行良好。但当我在Windows7 x64上运行脚本时,这些java -cp xxx.jar没有被执行,也没有报告错误。

EN

回答 2

Stack Overflow用户

发布于 2010-10-12 14:02:42

如果您的命令无法运行,system不会抛出异常或其他任何东西(这可能是您说“没有报告错误”的原因)。

因此,您需要检查java是否在您的PATH中;在Windows上,缺省情况下没有,并且需要将JDK的bin目录添加到您的PATH中。

票数 1
EN

Stack Overflow用户

发布于 2010-10-12 21:42:08

同样,如果您在类路径中使用多个java类,并使用“:”(冒号)而不是Windows中的“;”(分号),则无法执行脚本;

classpath_separator = RUBY_PLATFORM =~ /mswin/ ? ';' : ':'

如果你想捕获系统命令的输出,你可以使用下面的代码:

代码语言:javascript
复制
def run_cmd cmd, cmd_name = 'Command'
# save current STDOUT reference
default_stdout = STDOUT.dup
# temp file used to capture output of the child processes
# and avoid conflicts between several processes running at the same time
# (temp file has a unique name and will be cleaned after close)
tmp_file = Tempfile.new 'tmp'

cmd_output = ''
puts "Begin #{cmd_name}: #{cmd}"
begin
  # redirect default STDOUT to the tempfile
  $stdout.reopen tmp_file
  # execute command
  system "#{cmd} 2>&1"
ensure
  # read temp file content
  tmp_file.rewind
  cmd_output = tmp_file.read
  tmp_file.close
  # restore default STDOUT
  $stdout.reopen default_stdout
end

# push output to console
puts "Output of #{cmd_name}: #{cmd_output}"
puts "End #{cmd_name}"

cmd_output
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3912038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档