1

PHP経由でJavaに接続し、結果をPHPで出力したいと考えています。ここで、パラメーターを java に送信し、それを php に返して、その動作を確認したいと考えています。これどうやってするの?私はこれまでにこのコードを持っています:

PHP:

exec("java jar/name.jar", $output);
print_r($output);

ジャワ:

public class Main {
    public static void main(String[] args) {
        System.out.print(args[0]);
    }
}

結果は

Array ( )
4

4 に答える 4

10

行う

exec("/full/path/to/java -jar jar/name.jar 2>&1", $output);
print_r($output);

なぜなら

  • あなたのPHP環境には、おそらくJava実行可能ファイルがパスに定義されていません(また、そうすべきではありません)
  • jarファイルはで実行されますjava -jar
  • 出力にエラー メッセージを表示できるようにする必要があります2>&1(stderr から stdout にリダイレクト)。
于 2012-12-16T16:31:34.013 に答える
1

あなたのJavaプログラムは少なくとも1つの引数を期待していますが、phpコードはそれを与えていないので、変更してください

exec('java jar/name.jar', $output);

exec('java jar/name.jar some_value', $output);

編集:

引数を指定しなかったのに Array() になったのは、エラーの java による send が stderr に送られ、$output が stdout からしかデータを取得していないためと考えられます。

于 2012-12-16T15:02:42.583 に答える
0

RESTful 設計の使用を検討してください。Java プログラムを URL に配置し、PHP *file_get_contents()* で URL から読み取ります。Java プログラムがブラウザーの出力ストリームに書き込むものはすべて、その関数によって読み込まれる PHP 変数に表示されます。

于 2012-12-16T15:01:19.707 に答える
0

ネイティブ Java コードを PHP アプリケーションに本当に統合したい場合は、PHP/Java Bridgeを使用すると、java コードを exec() するよりも適切な方法で問題を解決できる可能性があります。

ただし、Java 機能用の小さなサービスを作成し、小さな Web ベースの API を介してそれらの機能を公開することをお勧めします (JSON を交換形式として使用することが望ましい)。

于 2012-12-16T15:05:18.100 に答える