我试图通过一系列系统命令从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"

08-19 01:20