1

そのため、subprocess.call を使用して、Python からjarファイルを実行しています。

subprocess.call(['java','-jar','jarFile.jar',-a','input_file','output_file'])

結果を外部の output_file ファイルに書き込みます。-aはオプションです。

Pythonでoutput_fileを分析したいのですが、ファイルを再度開かないようにしたいです。したがって、次のようにjarFile.jarを Python 関数として実行したいと考えています。

output=jarFile(input_file)

JPype をインストールして動作させました。クラスパスを設定し、JVM 環境を開始しました。

import jpype

classpath="/home/me/folder/jarFile.jar"

jpype.startJVM(jpype.getDefaultJVMPath(),"-Djava.class.path=%s"%classpath)

そして今立ち往生しています...

4

1 に答える 1

0

java -jar jarFile.jarjar のマニフェスト ファイルで構成されているクラス ファイルの main メソッドを実行します。jar ファイルを抽出すると、そのクラス名が見つかりますMETA-INF/MANIFEST.MF(任意の zip ツールで jar を開きます)。の値を探しますMain-Class。たとえば、com.foo.bar.Applicationこのようにメインメソッドを呼び出すことができるはずです

def jarFile(input_file):
    # jpype is started as you already did
    assert jpype.isJVMStarted()
    tf = tempfile.NamedTemporaryFile()
    jpype.com.foo.bar.Application.main(['-a', input_file, tf.name])
    return tf

(tempfile モジュールの正しい使い方についてはよくわかりません。自分で確認してください)

于 2014-10-09T15:56:58.123 に答える