class HelloWorld {
public static void main(String []args) {
System.out.println("hello world");
}
}class Text() {
public static void main(String []args) {
............
//我要在这里调用HelloWorld的main方法,并且把输出(hello world)放在String里,该怎么实现啊。
//
}
}我原来是这样想的
[code]
Process process=Runtime.getRuntime().exec("java joes.test.HelloWorld");


InputStream input=process.getInputStream();

byte[] data=null;
System.out.println("size:"+input.available());
input.read(data);
System.out.println(data);
[/code]
可是input的长度是0,运行到input.read时就抛空指针异常。

解决方案 »

  1.   


    Process process=Runtime.getRuntime().exec("java joes.test.HelloWorld");

    InputStream input=process.getInputStream();
    byte[] data=null;
    System.out.println("size:"+input.available());
    input.read(data);
    System.out.println(data);
      

  2.   

    类已经在classpath下,
    在CMD里输入java joes.test.HelloWorld通过了。
      

  3.   

    设置System.out为所需要的输出即可。System.out是一个PrintStream变量。也可以这样创建一个PrintStream的子类比如:public class MyPrintStream extends PrintStream{
    StringBuffer buffer=new StringBuffer();
    //..
    public void println(String str){
    buffer.append(str);
    }
    //..
    }class Text() {
    public static void main(String []args) {
    MyPrintStream p=new MyPrintStream ();
    System.setOut(p);
    HelloWorld.main(args);
    //这里  p.buffer就是你要的字符串
    }
    }
      

  4.   

    我觉得java中的main()方法是给你测试类用的
    如果你要捕获他的输出 应该把他单独写成一个方法 
    而不是用main()了。.
      

  5.   

    我把3楼的稍微调整了一下,楼主可以试一下import java.io.OutputStream;
    import java.io.PrintStream;
    public class Text {
      public static void main(String[] args) {
        MyPrintStream p = new MyPrintStream(System.out);
        HelloWorld.main(args);
        p.println(p.buffer.toString());
      }
    }
    class MyPrintStream extends PrintStream {
      public MyPrintStream(OutputStream out) {
        super(out);
      }
      StringBuffer buffer = new StringBuffer();
      public void println(String str) {
        buffer.append(str);
      }
    }
      

  6.   

    LZ代码写的太牛了,你想调main方法牛啊!!