1

ESA の実装に取り​​組んでいます。Java ファイルの 1 つを変更し、コマンドを使用してコンパイルしました。

javac -cp lib/*:esalib.jar ./src/clldsystem/esa/ESAAnalyzer.java

.class ファイルを .jar ファイルの対応するディレクトリ (esalib.jar/clldsystem/esa) に貼り付けます。また、元の対応する .class ファイルの名前を変更しました。

次に、コマンドを使用する python スクリプトがあります

java -cp lib/*:esalib.jar clldsystem.esa.ESAAnalyzer param1 param2

ただし、python スクリプトを実行すると、コマンドは次のように使用すると正常に実行されます。

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer computer apple'
args=shlex.split(x)
p=subprocess.Popen(args)
p.wait()

ただし、次のように使用すると、エラー: メイン クラスが見つからないかロードできませんでした:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer word1 word2'
args=x.split()
p=subprocess.Popen(args)
p.wait()

同じスクリプトで。ファイルから変数 word1 と word2 を読み取っています。ある場所では正常に機能し、別の場所ではエラーが発生するのはなぜですか? ファイルから正しく読み取っている印刷ステートメントを使用して確認したので、問題になることはありません。ありがとう

何が起こったのかの詳細は次のとおりです。

nishant@nishant-Inspiron-1545:~/esalib$ python test.py
['java', '-cp', 'lib/*:esalib.jar', 'clldsystem.esa.ESAAnalyzer', 'bottle', 'apple']
index loaded to memory
bottl
appl
vector 1 dimensions: 1782
vector 2 dimensions: 2766
0.024397644631615697
beach
['people', 'sand', 'desert', 'snow']
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2']
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer
beach 
people
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2']
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer
beach
sand

繰り返しごとに

4

1 に答える 1

1

これは機能します:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer %s %s' % (word1, word2)
args=shlex.split(x)
print args
p=subprocess.Popen(args)
p.wait()
于 2013-06-17T08:23:02.853 に答える