Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ruby呼叫毛伊岛或Bash_Java_Ruby On Rails_Ruby - Fatal编程技术网

Java Ruby呼叫毛伊岛或Bash

Java Ruby呼叫毛伊岛或Bash,java,ruby-on-rails,ruby,Java,Ruby On Rails,Ruby,我试图通过一系列系统命令从Ruby运行java命令行操作。第一个命令运行良好,第二个命令(MAUIJava命令)从未成功过。我做错什么了吗 Dir.chdir('/var/lib/maui') do system 'cat %s/*.txt > %s/topics.txt' % [text_path, identifier_path] system 'java maui.main.MauiTopicExtractor -l %s -m go_model' % [ident

我试图通过一系列系统命令从Ruby运行java命令行操作。第一个命令运行良好,第二个命令(MAUIJava命令)从未成功过。我做错什么了吗

Dir.chdir('/var/lib/maui') do

    system 'cat %s/*.txt > %s/topics.txt' % [text_path, identifier_path]
    system 'java maui.main.MauiTopicExtractor -l %s -m go_model' % [identifier_path]

end
我还尝试调用处理java命令的bash脚本:

output = %x[/var/lib/maui/process.sh #{identifier_path}]
然而,同样的结果也会发生——文件被连接起来,但永远不会到达Maui

当我从maui命令捕获stdoutput时,我得到了以下结果(尽管我已经根据需要设置了所有环境变量,并且在ruby之外运行该命令时可以正常工作):


非常感谢您的帮助。

基于您对未找到类的评论,我认为您需要这样调用:

system 'java -cp /path/to/maui.jar maui.main.MauiTopicExtractor -l %s -m go_model' % [identifier_path]
如果它从命令行工作,只需执行以下操作:

java maui.main.MauiTopicExtractor -l /path/to/file -m go_model
然后,您可以发布(来自shell)的输出:

来自ruby:

system "echo $CLASSPATH"

根据您对“未找到类”的评论,我认为您需要这样调用:

system 'java -cp /path/to/maui.jar maui.main.MauiTopicExtractor -l %s -m go_model' % [identifier_path]
如果它从命令行工作,只需执行以下操作:

java maui.main.MauiTopicExtractor -l /path/to/file -m go_model
然后,您可以发布(来自shell)的输出:

来自ruby:

system "echo $CLASSPATH"


假设Maui命令直接从命令行工作,在调用
system
之后,您是否在
ps
列表中看到它们的流程?它可能会写一些日志吗?我看不到它在ruby脚本中处理,但直接从命令行运行,我看到了它…system'what java'产生了什么?如果您将对maui的调用替换为:system“java maui.main.MauiTopicExtractor-l#{identifier_path}-m go_model>/tmp/maui.out 2>&1,那么/tmp/maui.out中有什么内容@rainkinz我刚刚更新了这个问题,给出了更详细的回答。我得到了NoClassDefFoundError假设Maui命令直接从命令行工作,在调用
系统
后,您是否在
ps
的列表中看到它们的过程?它可能会写一些日志吗?我看不到它在ruby脚本中处理,但直接从命令行运行,我看到了它…system'what java'产生了什么?如果您将对maui的调用替换为:system“java maui.main.MauiTopicExtractor-l#{identifier_path}-m go_model>/tmp/maui.out 2>&1,那么/tmp/maui.out中有什么内容@rainkinz我刚刚更新了这个问题,给出了更详细的回答。我正在拿NoClassDefFoundError谢谢兄弟,越来越近了。。。我试过这样做:java-cp$CLASSPATH maui.main.MauiTopicExtractor-l/path/to/dir-m go_model>/tmp/maui.out 2>&1它需要包含太多的内容,所以我正在使用CLASSPATH进行调整。但是现在我得到了:无法识别的选项:-我无法创建Java虚拟机。有什么想法吗?如果我直接运行这个命令,它可以正常工作。这只是在ruby中。我在回答中询问的结果是什么?另外,您确定运行了:java-cp$CLASSPATH maui.main.MauiTopicExtractor-l/path/to/dir-m go_model>/tmp/maui.out 2>&1,而不是java-cp$CLASSPATH-l maui.main.MauiTopicExtractor/path/to/dir-m go_model>/tmp/maui.out 2>&1。这个错误意味着-我被传递到java而不是MauiTopicExtractor classI我明白你现在说的了。。。你介意解释一下为什么ruby执行环境变量时没有导出它吗?一旦我将$CLASSPATH变量放入Ruby中的命令中,它就会工作……我不确定您的问题是否与$CLASSPATH变量有关,或者java需要您显式地传递类路径(至少在Ruby版本中是这样)。不知道为什么如果没有命令行的支持,它不会被传递到java。谢谢兄弟,越来越近了。。。我试过这样做:java-cp$CLASSPATH maui.main.MauiTopicExtractor-l/path/to/dir-m go_model>/tmp/maui.out 2>&1它需要包含太多的内容,所以我正在使用CLASSPATH进行调整。但是现在我得到了:无法识别的选项:-我无法创建Java虚拟机。有什么想法吗?如果我直接运行这个命令,它可以正常工作。这只是在ruby中。我在回答中询问的结果是什么?另外,您确定运行了:java-cp$CLASSPATH maui.main.MauiTopicExtractor-l/path/to/dir-m go_model>/tmp/maui.out 2>&1,而不是java-cp$CLASSPATH-l maui.main.MauiTopicExtractor/path/to/dir-m go_model>/tmp/maui.out 2>&1。这个错误意味着-我被传递到java而不是MauiTopicExtractor classI我明白你现在说的了。。。你介意解释一下为什么ruby执行环境变量时没有导出它吗?一旦我将$CLASSPATH变量放入Ruby中的命令中,它就会工作……我不确定您的问题是否与$CLASSPATH变量有关,或者java需要您显式地传递类路径(至少在Ruby版本中是这样)。不知道为什么如果没有命令行中的命令,它就不会被传递给java。