• ベストアンサー

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 = (なにも表示されない)

質問者が選んだベストアンサー

  • ベストアンサー
noname#205944
noname#205944
回答No.2

シェルのパスが問題かもしれませんね system "java Hello" だと文字列がそのままシェルに渡されます system "/bin/java", "Hello" とするとシェルの影響を受けないようになります 安全のため、リスト渡しにしたほうがいいと思いますよ ちなみに Windowsだと、第2引数で指定した文字列を実行して終了します Macだと・・・たしかToolServerがないとダメだったと思います

naokanak
質問者

お礼

コメントありがとうございました。 どうやらjavaの場所が/usr/binにはなかったのでうまく動かなかったようです。 見事にパスの問題でしたありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

system("java Hello"); の結果が-1(0でない)ことから、 java Hello が実行できていないのだと思います。 コンソールで java Hello が実行できる。 また、 CGIでないPerl スクリプトで 実行するとできる ということを確認してから サーバー上の動作について確認するといいのではないでしょうか?

naokanak
質問者

お礼

コメントありがとうございます。 CGIでないPerlスクリプトでためしてみたのですがそれは、うまく行くようです。 やはりサーバー上の問題のようです。 結局/usr/binの方にjavaをシンボリックリンクで持っていったらjavaは動くようになったので問題は解決しました。 ありがとうございました。

関連するQ&A