1

我正在尝试通过一系列系统命令从 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 命令捕获 stdoutput 时,我得到以下信息(即使我根据需要设置了所有环境变量,并且在我在 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

任何帮助表示赞赏。

4

1 回答 1

1

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

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"
于 2013-02-23T20:06:26.353 回答