- ベストアンサー
systemについて
Perlからsystemを使ってjavaを呼び出し、ブラウザに表示させようとしているのですがうまくいきません。バッククオートを用いても効果がないようです。 この問題を解決するにはどうすればよいのでしょうか? プログラムの中身は次のようになっています ***Hello.java*** class Hello{ public static void main(String args[]){ System.out.println("Hello World."); } } ***perlのよびだし部分*** $iti = system("java Hello"); print "\$iti = ", $iti,"<br>"; $ni = `java Hello`; print "\$ni = ", $ni, "<br>"; ***実行結果*** $iti = -1 $ni = (なにも表示されない)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
シェルのパスが問題かもしれませんね system "java Hello" だと文字列がそのままシェルに渡されます system "/bin/java", "Hello" とするとシェルの影響を受けないようになります 安全のため、リスト渡しにしたほうがいいと思いますよ ちなみに Windowsだと、第2引数で指定した文字列を実行して終了します Macだと・・・たしかToolServerがないとダメだったと思います
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
system("java Hello"); の結果が-1(0でない)ことから、 java Hello が実行できていないのだと思います。 コンソールで java Hello が実行できる。 また、 CGIでないPerl スクリプトで 実行するとできる ということを確認してから サーバー上の動作について確認するといいのではないでしょうか?
お礼
コメントありがとうございます。 CGIでないPerlスクリプトでためしてみたのですがそれは、うまく行くようです。 やはりサーバー上の問題のようです。 結局/usr/binの方にjavaをシンボリックリンクで持っていったらjavaは動くようになったので問題は解決しました。 ありがとうございました。
お礼
コメントありがとうございました。 どうやらjavaの場所が/usr/binにはなかったのでうまく動かなかったようです。 見事にパスの問題でしたありがとうございました。