各位大侠碰见过这种情况没有?  
  
   我有两个.jar文件A,B(都是桌面应用程序)和两个.bat文件C,D。   C调用A,D调用B.
    
    现在我双击C 调出A, 然后点击A上面的按钮,调用D,此时D调出B。    执行B(B实现的是读文件和写文件的功能),此时问题出现,程序无响应。    我百思不得其解,因为我单独点D调用B,然后运行B时,程序很快就执行结束,所以不存在代码质量的问题。    然后我就怀疑是不是因为开了两个.jar的原因,于是我把B通过A调出后,关闭A,再执行B 程序也很快执行结束。
 
    现在我知道原因了,但是不知道如何解决。各位大侠。哪个碰到过这样的情况,往不吝指教。
    

解决方案 »

  1.   

    A调用D时应该使用的是Runtime类吧?
    如果是这样的话,可能是下面的原因:
    本地的系统对标准输入和输出所提供的缓冲池有效,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程的锁,甚至死锁。为了处理好外部命令大量输出的情况,你要确保你的程序处理好外部命令所需要的输入或者输出。也就是说如果你调用的本地程序的输出过多,或者是输出过快,可能造成死锁。解决办法就是自己处理程序的输出。
      

  2.   

    -------------------------------------------
    C.bat: ..\jre\bin\javaw.exe -Xms128m -Xmx256m  -classpath "..\lib\l2fprod-common-all.jar;..\bin\Portal.jar;" Portal.Main %1
    D.bat: ..\jre\bin\javaw.exe -classpath "..\lib\jxl.jar;GeneratorWithtable.jar" src.Generator %1