Java 系统命令在Ruby中不工作并返回false?

Java 系统命令在Ruby中不工作并返回false?,java,ruby,ruby-on-rails-3,Java,Ruby,Ruby On Rails 3,我想从Ruby运行一个Java程序,它是一个独立的应用程序。我在Ruby中使用以下命令: system("cd /home/webserver/testproject"); system("sh testsh.sh") 我的Java项目在“/home/webserver/testproject”中可用,因此我使用第一个命令更改目录。sh文件写入一个文件,其中包含运行我的主类的信息,并将CLASSPATH环境变量设置为运行程序。当在Ruby外部执行此操作时,它可以正常工作,但不能在Ruby内部

我想从Ruby运行一个Java程序,它是一个独立的应用程序。我在Ruby中使用以下命令:

system("cd /home/webserver/testproject"); 
system("sh testsh.sh")
我的Java项目在“/home/webserver/testproject”中可用,因此我使用第一个命令更改目录。sh文件写入一个文件,其中包含运行我的主类的信息,并将
CLASSPATH
环境变量设置为运行程序。当在Ruby外部执行此操作时,它可以正常工作,但不能在Ruby内部执行。

调用
系统(“cd…”
仅在命令范围内更改当前工作目录。要在正确的目录中运行第二个命令,您需要链接它们:

system("cd /home/webserver/testproject && sh testsh.sh")
调用
system(“cd…
仅在命令范围内更改当前工作目录。要在正确的目录中运行第二个命令,您需要链接它们:

system("cd /home/webserver/testproject && sh testsh.sh")
调用
system(“cd…
仅在命令范围内更改当前工作目录。要在正确的目录中运行第二个命令,您需要链接它们:

system("cd /home/webserver/testproject && sh testsh.sh")
调用
system(“cd…
仅在命令范围内更改当前工作目录。要在正确的目录中运行第二个命令,您需要链接它们:

system("cd /home/webserver/testproject && sh testsh.sh")

system
每次运行时都会生成一个新的子shell,因此您总是在当前目录中启动。您需要的是使用
Dir.chdir
更改Ruby中的目录:

Dir.chdir("/home/webserver/testproject") do
  system "sh testsh.sh"
end
工作目录中的更改将仅应用于
do
end
块中的代码。如果要使更改永久性地用于整个脚本,可以通过以下方式执行:

Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"

system
每次运行时都会生成一个新的子shell,因此您总是在当前目录中启动。您需要的是使用
Dir.chdir
更改Ruby中的目录:

Dir.chdir("/home/webserver/testproject") do
  system "sh testsh.sh"
end
工作目录中的更改将仅应用于
do
end
块中的代码。如果要使更改永久性地用于整个脚本,可以通过以下方式执行:

Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"

system
每次运行时都会生成一个新的子shell,因此您总是在当前目录中启动。您需要的是使用
Dir.chdir
更改Ruby中的目录:

Dir.chdir("/home/webserver/testproject") do
  system "sh testsh.sh"
end
工作目录中的更改将仅应用于
do
end
块中的代码。如果要使更改永久性地用于整个脚本,可以通过以下方式执行:

Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"

system
每次运行时都会生成一个新的子shell,因此您总是在当前目录中启动。您需要的是使用
Dir.chdir
更改Ruby中的目录:

Dir.chdir("/home/webserver/testproject") do
  system "sh testsh.sh"
end
工作目录中的更改将仅应用于
do
end
块中的代码。如果要使更改永久性地用于整个脚本,可以通过以下方式执行:

Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"

感谢大家现在的努力。还有一个疑问是,实际上我正在运行sh文件,因为它会生成一些我想在ruby中捕获的记录器信息。@user2436481这将是一个很好的单独问题。但在你提问之前,也许你会在这里找到答案:谢谢大家现在正在工作。还有一个疑问是,实际上我正在运行sh文件它会生成一些我想在ruby中捕获的记录器信息。@user2436481这将是一个很好的单独问题。但在你提问之前,也许你会在这里找到答案:谢谢你现在做了很多工作。还有一个疑问是,实际上我正在运行sh文件,因为它会生成一些我想在ruby中捕获的记录器信息。@user2436481这将是一个很好的单独问题。但在你提问之前,也许你会在这里找到答案:感谢大家现在的工作。还有一个疑问是,实际上我正在运行sh文件,因为它生成了一些日志信息,我想用ruby捕获。@user2436481这将是一个很好的单独问题。但在你提问之前,也许你会在这里找到答案: