Voila j'ai programme java qui execute un utilitaire oracle qui me charge des donnees dans la base, via un .bat ou une ligne de commande, peu importe, et parfois il me charge 4 lignes, parfois plus mais il ne rend jamais la main. J'ai bien l'impression qu'il y a un probleme de liberation de memoire mais je ne vois pas trop comment la liberer. Voivi mon code:
 
 public void ExecDosCmd(String cmd) {
    String[] command = {"cmd.exe", "/c " + cmd} ;
    System.out.println(cmd);
    Runtime runtime = Runtime.getRuntime () ;
    Process process = null ;
    try { 
     process = runtime.exec (command) ;  
      try {
        process.waitFor () ;
      } catch (InterruptedException intexc) {
        System.out.println ("Interrupted Exception on waitfor: " + intexc) ;
      }
      System.out.println ("Return code from process " + process.exitValue ()) ;
      System.out.println ("Done executing") ;
 
    } catch (Exception e) {
      System.out.println ("IO Exception from exec: " + e.getMessage ()) ;
      e.printStackTrace () ;
    }
  }
 
quand je lance la commande du style
 
sqlldr nom_user/nom_base@nom_instance control=c:\fichier_parametre.ctl log=C:\fichier.log
 
l'utilitaire charge les paremetres de fichier_parametre qui va chercher un fichier plat separe par des ";" en faisant des commit a chaque ligne et ces commit aparaissent sur la console quand on execute cette commande manuellement. Peut etre que ces donnees en sortie sature le buffer de java?
 
Avez vous une idee???

 

Répondre à