我试图通过一系列系统命令从Ruby运行Java命令行操作。第一个命令运行良好,第二个命令却从未成功(maui java命令)。我做错了什么吗?
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时,我得到以下信息(即使我已根据需要设置了所有环境vars并在ruby之外运行命令时都可以使用):
Exception in thread "main" java.lang.NoClassDefFoundError: maui/main/MauiTopicExtractor
Caused by: java.lang.ClassNotFoundException: maui.main.MauiTopicExtractor
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: maui.main.MauiTopicExtractor. Program will exit
任何帮助表示赞赏。
最佳答案
根据您对未找到的类的评论,我认为您需要像这样调用:
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)的输出:
echo $CLASSPATH
从红宝石:
system "echo $CLASSPATH"