1

一連のシステムコマンドを使用して、RubyからJavaコマンドライン操作を実行しようとしています。最初のコマンドは正常に機能しますが、2番目のコマンド(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

次に、(シェルからの)出力を投稿できますか?

echo $CLASSPATH

そしてルビーから:

system "echo $CLASSPATH"
于 2013-02-23T20:06:26.353 に答える