我建立了两个类 ,一个主类一个子类。当我如果只运行子类的时候,子类的process.waitfor(),可以起作用,可是如果这个类被调用,这个类就不等被运行结束就被关闭。如何解决这个问题,我已经再网上找了好久,无解,哪位高手请指教。子类是可以单独运行的。代码是
主类是: A2POS pos=new A2POS();
pos.Pos(result1);子类是:
public void Pos(String Inquestion) throws IOException //<1>写入要标注的句子
{
try{
try
{
String com= " c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe";
// command + " /c dir > c:\\dir.txt");
//Process process = Runtime.getRuntime().exec("cmd /c start "+com+" ");
String[] a={"c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe","-i question.txt","-o result.txt"};
Process process = Runtime.getRuntime().exec
("cmd /c start/wait c:\\jbuilder\\geniatagger-1.0\\geniatagger -i "+Qurl+" -o "+Rurl+""); process.waitFor();
} catch (Exception e)
{
e.printStackTrace();
}
}
主类是: A2POS pos=new A2POS();
pos.Pos(result1);子类是:
public void Pos(String Inquestion) throws IOException //<1>写入要标注的句子
{
try{
try
{
String com= " c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe";
// command + " /c dir > c:\\dir.txt");
//Process process = Runtime.getRuntime().exec("cmd /c start "+com+" ");
String[] a={"c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe","-i question.txt","-o result.txt"};
Process process = Runtime.getRuntime().exec
("cmd /c start/wait c:\\jbuilder\\geniatagger-1.0\\geniatagger -i "+Qurl+" -o "+Rurl+""); process.waitFor();
} catch (Exception e)
{
e.printStackTrace();
}
}
at java.lang.ProcessImpl.exitValue(Native Method)
at FAQ.A2POS.Pos(A2POS.java:58)
at FAQ.A0Main.main(A0Main.java:26)
不可以去的,那个程序加载比较曼,得用4,5秒呢。 有没有别的办法,去掉后就是以上报错。
java.lang.IllegalThreadStateException: process has not exited
at java.lang.ProcessImpl.exitValue(Native Method)
at FAQ.A2POS.Pos(A2POS.java:58)
at FAQ.A0Main.main(A0Main.java:26)
public static String Rurl="C:\\jbuilder\\POS\\result.txt"; //POS的输出文件
private static File Qu=new File(Qurl); //输入流对象
private static File Ru=new File(Rurl); //输出流对象 public void A2POS() { //建立两个新的文件
try {
Qu.delete();
Qu.createNewFile();
}catch (Exception e)
{
e.printStackTrace();
}
try
{
File Ru=new File(Rurl);
Ru.delete();
Ru.createNewFile();
}catch (Exception e)
{
e.printStackTrace();
} }//A2POS() //调用POS 外部程序 geniatagger
public void Pos(String Inquestion) throws IOException //<1>写入要标注的句子
{ String question= Inquestion;
PrintWriter out= new PrintWriter(new BufferedWriter(new FileWriter(Qu)));
out.write(question);
out.close(); try
{
boolean flag=false;
String com= " c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe";
// command + " /c dir > c:\\dir.txt");
//Process process = Runtime.getRuntime().exec("cmd /c start "+com+" ");
String[] a={"c:\\jbuilder\\geniatagger-1.0\\geniatagger.exe","-i question.txt","-o result.txt"};
Process process=null;
process = Runtime.getRuntime().exec
("cmd /c start/wait c:\\jbuilder\\geniatagger-1.0\\geniatagger -i "+Qurl+" -o "+Rurl+"");
process.waitFor();
process.waitFor();
} catch (Exception e)
{
e.printStackTrace();
}
}//Pos
}//class
------------------------------
这个是构造函数还是方法啊?