3

JavaコードからPythonスクリプトを呼び出しています。これはコードです:

インポートjava.io.BufferedReader;
インポートjava.io.IOException;
インポートjava.io.InputStreamReader;

パブリッククラスJavaRunCommand{
    public static void main(String args [])throws IOException {

        //コマンドとパラメータを設定します
        String pythonScriptPath = "my-path";
        String [] cmd = new String [2];
        cmd [0] = "python2.6";
        cmd [1] = pythonScriptPath;

        //外部コマンドを実行するランタイムを作成します
        ランタイムrt=Runtime.getRuntime();
            プロセスpr=rt.exec(cmd);

        //Pythonスクリプトから出力を取得します
        BufferedReader bfr = new BufferedReader(new InputStreamReader(
                pr.getInputStream()));
        文字列行="";
        while((line = bfr.readLine())!= null){
            //Pythonスクリプトから各出力行を表示します
            System.out.println(line);
        }
    }

}

動作するpython.py

OSのインポート
統計インポートから*

c = 5
印刷c

動作しないpython.py

MySQLdbをインポートする
OSのインポート
統計インポートから*

c = 5
印刷c
#いくつかのデータベースコードがダウン

ですから、私はスタートアップの締め切りがあり、MVPプロ​​ジェクトをクライアントに見せなければならないという危機的な段階にあり、このようなPythonスクリプトを呼び出すことを考えていました。dB接続とMySQLdbライブラリなしで何かを印刷しているときに機能します。しかし、それらを含めると、Pythonスクリプトは実行されません。ここで何が問題なのですか。すべての入力を処理するプロセスを実行することを想定していませんか。MySQLdbをインストールしていて、スクリプトはJavaコードなしで実行されます。

私はこれが問題を解決するための最良の方法ではないことを知っています。しかし、クライアントに何かを示すには、このことが機能する必要があります。助言がありますか ?

4

1 に答える 1

0

そのため、python プログラムを実行するために Java で渡していた引数に問題があることがわかりました。

最初の引数は - python 2.6 でしたが、MySQLdB と python との互換性の問題があったため、バージョン番号ではなく単なる python にする必要がありました。

最終的に、Python コードで MySQLdB の代わりに MySQL Python コネクタを使用することにしました。それは魅力のように機能し、問題は解決しました!

于 2013-03-10T03:52:27.727 に答える