0

PHPでJavaプログラムを呼び出して、Webインターフェイスで使用しようとしています。

Java プログラムは外部ライブラリに依存しています: commons-cli-1.2.jar

したがって、基本的には、Java プログラムを呼び出す前にエクスポートする必要があります。しかし、最初に次のようにエクスポートすると:

shell_exec('export CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar');

次に、Java プログラムを次のように呼び出します。

shell_exec('java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o');

呼び出しごとに異なるシェルが作成されると思います。その場合、エクスポートは Java プログラムに影響しません。それとも私が間違っていますか?

それ以外の場合は、サーバーにファイルを出力する必要があります。しかし、単にそうではありません。それで、何が悪いのですか?何か案が?

編集:ただし、para_i などの一部のパラメーターは入力ファイル名を表しているため、そのフルパスを指定する必要があるためでしょうか? 入力ファイルが同じ作業ディレクトリにあると仮定しているだけなので、問題はありませんよね?

edit-2: コマンドラインを使用すると正しく出力されます;)

4

4 に答える 4

0

このように呼べるはずです。

shell_exec('java -cp $CLASSPATH:~/lib/commons-cli-1.2.jar ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

もう1つのオプションは、2つのコマンドを別々に発行することですが、次のように同じシェルに発行します。

shell_exec('export CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar; java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

編集:一部のシェルでは、変数の設定中にエクスポートを呼び出せません。したがって、これは上記の2番目のオプションよりも安全な場合があります。

shell_exec('CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar; export CLASSPATH; java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

別の編集:上記のいずれも機能しない場合は、さらにトラブルシューティングを行う必要があります。Javaプログラムはコマンドプロンプトから動作しますか?

java -cp $CLASSPATH:/home/user/lib/commons-cli-1.2.jar ComputePagerank -i param1 -d param2 -e param3 -o param4 > message
于 2009-12-02T13:20:03.820 に答える
0

そうです、各 shell_exec は個別のシェルを作成します。

env CLASSPATH=whatever java -switches
于 2009-12-02T13:19:31.357 に答える
0

私は使うだろう

shell_exec('java -cp $CLASSPATH:/home/yourname/dir/lib/commons-cli-1.2.jar ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

(これは重要です)チルダ(〜)をディレクトリへの実際のパスに置き換えます(/home/yournameたとえば)。~ はシェルによって展開され、使用しているシェルに依存します。

于 2009-12-02T13:28:35.590 に答える
0

実行したいコマンドを含む簡単なシェル スクリプトを作成してみてください。引数をシェルスクリプトに渡すこともできるので、それも問題ではありません。

例えば

 echo "Running Script..."
 java -cp $CLASSPATH:~/lib/commons-cli-1.2.jar ComputePagerank -i $1 -d $2 -e $3 -o $4 > message

次に、最初にいくつかのパラメーターを指定してコマンドラインから呼び出してみてください。出力した?次に、php スクリプトから呼び出してみます。出力した?そうでない場合は、権限を確認する必要があります。少し前に、ファイルを書き込む権限がまったくないJavaプログラムで同様の経験をしました。

于 2009-12-02T13:42:52.207 に答える