我建立了两个类 ,一个主类一个子类。当我如果只运行子类的时候,子类的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();
       }
       }

解决方案 »

  1.   

    lz的try 和catch 怎么不是成对出现的啊   两个try只有一个catch   编译能通过?
      

  2.   

    我只是截取了一部分,可以通过的。代码都单独测试过的。就是子类一被调用,里边的RUNTIME就不能完成后才推出。
      

  3.   

    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)
    不可以去的,那个程序加载比较曼,得用4,5秒呢。 有没有别的办法,去掉后就是以上报错。
      

  4.   

    这就是去掉后的报错 
             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)
      

  5.   

    public class A2POS {    public static String Qurl="C:\\jbuilder\\POS\\question.txt";//POS的输入文件
        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
      

  6.   

    以上类被调用时不可以完成RUNTIME为什么啊?
      

  7.   

    public void A2POS() { 
    ------------------------------
    这个是构造函数还是方法啊?