Java 从getInputStream获取输入时出现奇怪的问题

Java 从getInputStream获取输入时出现奇怪的问题,java,Java,这是我的密码: Runtime re = Runtime.getRuntime(); BufferedReader output = null; try{ Process cmd = re.exec("java -jar myProg.jar " + myArgument); output = new BufferedReader(new InputStreamReader(cmd.getInputStream

这是我的密码:

    Runtime re = Runtime.getRuntime();
    BufferedReader output = null;    

    try{
            Process cmd = re.exec("java -jar myProg.jar " + myArgument); 
            output =  new BufferedReader(new InputStreamReader(cmd.getInputStream()));
        }

    catch (Exception e){
            e.printStackTrace();
    }

   String line;
   while ((line = output.readLine()) != null)
   {
    //process line
   }
调试此代码段时,我发现从输出中读取每一行时,它会跳过某些行

如果我从命令行运行这个myProg.jar,我在命令行上看到的文本与我在java程序内部处理输出时得到的文本不是100%相同


这是什么原因造成的?输出全部为文本

您似乎只是在读取标准输出,而您可能也会得到标准错误的输出。两本我都会读


请注意,您需要同时读取这两个流,以避免阻塞。有关更多详细信息,请参阅。

您似乎只是在读取标准输出,而您可能也在获取标准错误的输出。两本我都会读


请注意,您需要同时读取这两个流,以避免阻塞。有关更多详细信息,请参阅。

这不会直接回答您的问题,但您是否考虑过使用类加载器加载类,而不是使用单独的过程:-这可能会让您更容易,因为您不必通过命令行-您可以与对象通信。这不会直接回答您的问题,但是,您是否考虑过使用类加载器来加载类,而不是使用单独的进程:-这可能会让您更容易,因为您不必通过命令行-您可以与对象通信。为什么输出只是随机出现在标准错误中?对我来说没有意义。这不是一个错误,这是一个输出。为什么输出只是从标准错误中随机出来的呢?对我来说没有意义。这不是一个错误,这是一个输出。