读书人

今生遇到这样的有关问题是小弟我的荣幸

发布时间: 2012-03-02 14:40:29 作者: rapoo

今生遇到这样的问题是我的荣幸
package 进程间的通信;
import java.io.*;

public class MainProcess implements Runnable{
Process p=null;
/** Creates a new instance of MainProcess */
public MainProcess()
{
//new Thread(this).start();
try
{
p=Runtime.getRuntime().exec( "java ChildProcess ");
}
catch(Exception e)
{
e.printStackTrace();
}
new Thread(this).start();
}
public void run()
{

InputStream ism=p.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(ism));
try
{
while(true)
{
String str=br.readLine();
System.out.println(str+ ": ");
}

// br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
MainProcess mp=new MainProcess();
}
}


//下面是子进程代码
package 进程间的通信;

import java.io.*;
public class ChildProcess {

/** Creates a new instance of ProcessTest */
public static void main (String args[])
{
while(true)
{


System.out.print( "communication\n ");
}
}

}//为什么读取到的内容为null,而不是communication



[解决办法]
在eclipse中开始我也不能执行,现在可以了。

p=Runtime.getRuntime().exec( "java packageName.ChildProcess ");
中加上packageName就可以了。
因为在Runtime.getRuntime().exec()中执行java时,是以工程路径为相对路径的(你可以把ChildProcess去掉包放在工程目录下试一试 )。
所以你不加包名的话是找不到ChildProcess的。

读书人网 >J2SE开发

热点推荐