Java bufferedReader.readLine();总是返回空值

Java bufferedReader.readLine();总是返回空值,java,linux,Java,Linux,我定义了一个函数来返回命令进程输出,在windows中它工作正常,但在Linux中它失败了 Fro命令ps-u root | grep java | awk'{print$1}'其始终返回null 甚至在执行这个方法之前,我就尝试在命令提示符下执行命令,结果成功了 #ps -u root|grep java|awk '{print $1}' 385 2018年 2048年 4242 21290 25110 25589 26166 当我尝试下面的代码时,它给出了一个错误 inputstream

我定义了一个函数来返回命令进程输出,在windows中它工作正常,但在Linux中它失败了

Fro命令ps-u root | grep java | awk'{print$1}'其始终返回null

甚至在执行这个方法之前,我就尝试在命令提示符下执行命令,结果成功了

#ps -u root|grep java|awk '{print $1}'
385

2018年

2048年

4242

21290

25110

25589

26166

当我尝试下面的代码时,它给出了一个错误

inputstream = process.getErrorStream();
        inputstreamreader = new InputStreamReader(inputstream);
        bufferedReader = new BufferedReader(inputstreamreader);
        currentLine = bufferedReader.readLine();

 (java.lang.String) ERROR: User name does not exist.
那么,这个错误的原因是什么,请指导解决这个问题

currentLine = bufferedReader.readLine();\\Always returning null for **ps -u root|grep java|awk '{print $1}'** command
        while(currentLine!=null)
        {
            cmdOutput += currentLine;
            currentLine = bufferedReader.readLine();
        }
将上述代码更改为:并重试一次

    while((currentLine = bufferedReader.readLine())!=null)
    {
        cmdOutput += currentLine;
        //currentLine = bufferedReader.readLine();
    }

如果它在windows中运行,我认为问题与linux中的权限有关,或者您可能必须是超级用户才能执行该命令。您是否使用超级用户帐户登录。是的,我在命令中使用的用户根目录与我登录的用户相同。您正在执行的命令是否已安装在您的系统中。只需在终端中检查它。我已经指定,我能够从命令提示符成功运行命令。查看上面提供的信息(从同一台机器上,只有我正在通过eclipse运行java程序)。这可能是由于您的命令中的管道,请看一下。感谢您的回复,我编辑了我的描述,请在我尝试以下代码时发表评论,因为它给出了一个错误列
    while((currentLine = bufferedReader.readLine())!=null)
    {
        cmdOutput += currentLine;
        //currentLine = bufferedReader.readLine();
    }