尝试Regex匹配Processbuilder输出时出现异常

Omi*_*mid 1 java processbuilder

我有以下代码:

private void GetInfo(String src) throws IOException{

        Scanner scan = new Scanner(System.in);          
        String filename = new File(src).getName();

        ProcessBuilder builder = new ProcessBuilder("/Users/Daim/Desktop/process", src);
        builder.redirectErrorStream(true);
        Process process = builder.start();
        final InputStream is = process.getInputStream();

            new Thread(new Runnable() {
                String line;
                @Override
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
                        while ((line = br.readLine()) != null) {
                            System.out.println(line);
                        }

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

                    Pattern p = Pattern.compile("least");
                    Matcher m = p.matcher(line);

                    //System.out.println("match");

                }

            }).start();
    }
Run Code Online (Sandbox Code Playgroud)

由于"Matcher m = p.matcher(line);"而获得异常:

Exception in thread "Thread-1" java.lang.NullPointerException
    at java.util.regex.Matcher.getTextLength(Matcher.java:1234)
    at java.util.regex.Matcher.reset(Matcher.java:308)
    at java.util.regex.Matcher.<init>(Matcher.java:228)
    at java.util.regex.Pattern.matcher(Pattern.java:1088)
    at Wds$2.run(Wds.java:152)
    at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个例外?我想这是因为变量线很忙?

Bob*_*der 6

在循环之后调用此行,当line为null时.

Matcher m = p.matcher(line);
Run Code Online (Sandbox Code Playgroud)

您应该将此行添加到循环中.