• ベストアンサー

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

  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

  • javaの基本的な質問

    下記を実行すると、上から順番にメソッドが実行され、 「Hello Java  Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }

    • ベストアンサー
    • Java
  • この文章あっていますか?

    public class HelloWorld { public static void main(String[] args) { String message; message = "Hello Java World !"; System.out.println(message); } } これが正解文なのですが public class HelloWorld { public static void main(String[] args) { String message; message = "Hello java World"; System.out.ptintln(message); } } この文のどこが間違っていますか?ぜんぜんわからないので誰か教えてください。

    • ベストアンサー
    • Java
  • プログラムの組み合わせ方

    java初心者です。 2つのプログラムを組み合わせて1つのプログラムにしたいんですが、イマイチ分かりません。 このプログラムと、 import java.io.*; class Hello2 {  public static void main(String[] args) throws IOException {   System.out.println("名前を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   System.out.println(str + "さん、こんにちは!");  } } このプログラムを、 import java.io.*; class Sanbai{  public static void main(String[] args) throws IOException {   System.out.println("好きな数を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   int x;   x = Integer.parseInt(str);   System.out.println("あなたの入力した数:" + x);   System.out.println("その3倍の数:" + (x*3));  } } 組み合わせて1つのプログラムにするにはどうしたらいいですか?(>_<)

    • ベストアンサー
    • Java
  • public class HelloFriendsFor2 {

    public class HelloFriendsFor2 { public static void main(String[] args) { System.out.print("Hello "); for (String name : args) { System.out.print(name); System.out.print(" "); } System.out.println(); } } } for文の結果を見るためどうしたらいいですか? 本ではこうやって書いてたんですけど c:\javac HelloFriendsFor2.java c:\java HelloFriendsFor2 HI HELLO NICE TO MEET YOU netbeansで見る方法はないですか?

    • ベストアンサー
    • Java
  • JARファイルをコンソールで表示できません。

    EclipseでJarファイルを作成しました。 ソースは以下のとおりなのですが、 Jarファイルをダブルクリックすると、ダイアログボックスだけが表示されます。 コンソール出力をしたいのですが、どうすればいいでしょうか?よろしくお願いします。 WindowsXpです。 ---------------------------------------- import javax.swing.*; public class test { public static void main(String[] args) { System.out.println("Hello Java"); JOptionPane.showInputDialog("Show Dialog"); System.out.println("Hello Java"); } } ----------------------------------------

    • ベストアンサー
    • Java
  • Processingでpure Javaモード

    Processingでstaticなメソッドを使いたいです。 wikipediaで調べると、pure Java モードを明示的に指定しなければならないとあります。 しかし、いくら調べてもpure Java モードの指定方法は載っていませんでした。 どのようにすればpure Java モードに指定することができるのですか。教えてください。 ちなみに以下のようなHello Worldのプログラムを試しに書いたのですが、staticだからダメだと動かすことができませんでした。 class Main{ public static void main(String[] args){ System.out.println("Hello World!"); } } よろしくお願いします。

    • ベストアンサー
    • Java
  • java

    コンパイルできても、実行ができません。 次のようなエラーがでます。 このエラーはどのようなエラーなのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError: test コードはただたんにHello JAVA と表示させるだけです。 class Test{ public static void main(String args[]){ System.out.println("Hello Java\n"); } }

    • ベストアンサー
    • Java
  • コンパイラのバグ?それとも

    下のようなコードを書いて、たとえば java PossibleCompilerMalfunction Hello のように実行すると、 Hello と表示されることを期待していたのですが、 null と表示されてしまいます。 (JDK1.5を使っています) final String t = args[0]; の部分を final String t = "Hello"; のように書き換えると、 Hello と表示されます。 つまり、コンパイル時に「t」の値が決まっていなければ nullになってしまうようです。 これってコンパイラのバグでしょうか。 あるいは私の考えに間違いがあるのでしたら、 指摘していただけるとありがたいです。 public class PossibleCompilerMalfunction { public static void main(String[] args) { final String t = args[0]; MyClass mc = new MyClass() { void foo() { System.out.println(t); } }; } static abstract class MyClass { MyClass() { foo(); } abstract void foo(); } }

    • ベストアンサー
    • Java
  • メソッドのオーバーライド(java)

    class A3{ void hello(){ System.out.println("A3"); } void hello(int i){ System.out.println("A3"+i); } } class B3 extends A3{ void hello(){ System.out.println("B3"); } } class C3 extends B3{ void hello(String s){ System.out.println("C3"+s); } } class MethodOverriding3{ public static void main(String args[]){ A3 obj = new C3(); obj.hello(); } } 上のプログラムを実行すると"B3"と表示されまが、どうしてクラスBのメソッドが実行されるのでしょうか? クラスAのメソッドが無視される仕組みがわかりません。 また、クラスMethodOverriding3でobj.hello("abc")としてコンパイルすると mo.java:25: シンボルを見つけられません。 シンボル: メソッド hello(java.lang.String) 場所 : A3 の クラス obj.hello("abc");   ^ エラー 1 個 とエラーが出ます。 どうしてでしょうか? 誰か教えてください、お願いします。

    • ベストアンサー
    • Java
  • javaの問題わからなくって質問します

    内容はEclipse上でプロジェクトフォルダを作りひとつは別のjavaファイルを動かすのともう一つはそのお同じフォルダから動かされるjavaプログラムです。 説明不足というかまだ触れてそんなにたってないのでソースを載せます class SampleManager { public static void main(String[] args){ exec obj= new exec(samlple1.java); obj.say(); } } class exec{ String phrase; exec(String phrase){ this.phrase=sample2.java; } void say(){ System.out.println(phrase); } } /////// public class samlple1 { public static String java; public static void exec(String[] args) {//execをした理由はSampleManagerにあるクラスexecを呼び出れるため System.out.println("Hello,World!")//この二つの出力結果を表示したい; System.out.println("こんにちは!"); } } ひとつのフォルダに上記のソースいれてSampleManager.java からsample.javaの出力結果の HelloWorld! こんにちは! を出力したいですがエラーはなく例外処理もありませんけど何故か出力結果はnullが返ってしまいます なぜでしょうか? アドバイスをお願いします