You print only the stdout or stderr, depending on the exit code

Try printing both.

On May 4, 2010 6:27 AM, "Haidong Zhu" <zhuhaidong98@gmail.com> wrote:

   Below is my code,if i set the command as "ls ~/" I can get the output of command ls by reading the input stream from channel.

   if i set the command as "java -version", i can not get any output and the exitcode is 0.

   command = "ls ~/";
   //command = "java -version";
   InputStream in = null;
   InputStream err = null;
   BufferedReader inReader = null;
   BufferedReader errReader = null;
   try {
     JSch jsch = new JSch();
     Session session = jsch.getSession(user, host, port);
     session.setUserInfo(userInfo);
     session.setTimeout(timeout);
     session.connect();
     Channel channel = session.openChannel("exec");
     ((ChannelExec)channel).setCommand(command);
     channel.setInputStream(null);
     ((ChannelExec)channel).setErrStream(null);

     in = channel.getInputStream();
     err = ((ChannelExec)channel).getErrStream();

     channel.connect();

     int exitCode = 0;
     while(true) {
       if(channel.isClosed()){
         exitCode = channel.getExitStatus();
         break;
       }
       try {
         Thread.sleep(1000);
       } catch (InterruptedException ie) {
       }
     }

     inReader = new BufferedReader(new InputStreamReader(in));
     errReader = new BufferedReader(new InputStreamReader(err));

   if (exitCode != 0) {
     while ((s = errReader.readLine()) != null) {
       sb.append(s).append("\n");
     }
     status.setData(sb.toString());
   } else {
     while ((s = inReader.readLine()) != null) {
       sb.append(s).append("\n");
     }
     System.out.println(sb.toString());
   }


------------------------------------------------------------------------------
_______________________________________________
JSch-users mailing list
JSch-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jsch-users