Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印到错误屏幕的奇怪输出(System.err)_Java_Eclipse - Fatal编程技术网

Java 打印到错误屏幕的奇怪输出(System.err)

Java 打印到错误屏幕的奇怪输出(System.err),java,eclipse,Java,Eclipse,为了测试,我在主程序中运行了三个线程。一切都很好,它做了它应该做的 然而,我注意到在控制台上我得到了以下输出(红色): 当我的主程序继续运行时,程序不断地打印这些连续的行。有人能向我解释一下这是什么意思,以及它是否会影响我的课程吗 编辑:这是到目前为止我的代码。一个线程每秒生成一个文件,另一个线程具有读取该文件然后删除该文件的函数,最后一个线程持续请求用户输入,并根据该输入执行一个函数: static PredictiveModelDemo pmDemo; public sta

为了测试,我在主程序中运行了三个线程。一切都很好,它做了它应该做的

然而,我注意到在控制台上我得到了以下输出(红色):

当我的主程序继续运行时,程序不断地打印这些连续的行。有人能向我解释一下这是什么意思,以及它是否会影响我的课程吗

编辑:这是到目前为止我的代码。一个线程每秒生成一个文件,另一个线程具有读取该文件然后删除该文件的函数,最后一个线程持续请求用户输入,并根据该输入执行一个函数:

    static PredictiveModelDemo pmDemo;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        pmDemo = new PredictiveModelDemo();
        new Thread(new generateFiles()).start();
        new Thread(new feedModel()).start();
        new Thread(new makePrediction()).start();
    }

    static class generateFiles implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            File file = new File("C:\\Users\\ZK0GJXO\\Documents\\NoOfTrades.txt");
            int i = 1;
            while(true){
                try {
                    if(!file.exists()){
                        PrintWriter writer = new PrintWriter("C:\\Users\\ZK0GJXO\\Documents\\NoOfTrades.txt");
                        writer.print(i * 15);
                        writer.close();
                        i++;
                    }
                    else{
                        i++;
                        Thread.sleep(1000);
                    }

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    static class feedModel implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            pmDemo.feedModel();
        }
    }
    static class makePrediction implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("Enter P to make a prediction: ");
            Scanner in = new Scanner(System.in);
            String response = in.next();
            while(true){
                if(response.toUpperCase().equals("P")){
                    pmDemo.makePrediction();
                    response = "";
                    System.out.println("Enter P to make a prediction: ");
                    response = in.next();
                }
            }
        }
    }

红色输出为标准输出。它可能是您正在使用的某个库的日志输出,无论
PredictiveModelDemo
来自何处

您是否使用任何日志库,如JUL或log4j?如果是,并且库正确使用了java的日志框架,则可以过滤掉不感兴趣的日志行

库也可能直接调用
System.err.println
,但强烈建议不要这样做。如果是这样,你对此无能为力


无论哪种方式,它都不会影响您的程序。

您是否有每3行写一次控制台日志?这就是它看起来的样子。。如果soIt这样做是因为你在那行写了什么,它不会影响你的程序。不,不是那一行,是前一行。(如果不显示代码,很难说为什么代码会执行某些操作…)我使用的是ApacheSpark2.1,这个库使用的是log4j。我知道我的程序不会受到任何影响,但看到这些消息很烦人,让我的测试很难理解。不管怎样,我怎样才能摆脱他们?我以前使用过这个库,以前从未将此输出打印到控制台。这一切都是从我开始使用多个线程开始的,所以我通过使用以下命令来摆脱它们:
System.err.close()
    static PredictiveModelDemo pmDemo;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        pmDemo = new PredictiveModelDemo();
        new Thread(new generateFiles()).start();
        new Thread(new feedModel()).start();
        new Thread(new makePrediction()).start();
    }

    static class generateFiles implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            File file = new File("C:\\Users\\ZK0GJXO\\Documents\\NoOfTrades.txt");
            int i = 1;
            while(true){
                try {
                    if(!file.exists()){
                        PrintWriter writer = new PrintWriter("C:\\Users\\ZK0GJXO\\Documents\\NoOfTrades.txt");
                        writer.print(i * 15);
                        writer.close();
                        i++;
                    }
                    else{
                        i++;
                        Thread.sleep(1000);
                    }

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    static class feedModel implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            pmDemo.feedModel();
        }
    }
    static class makePrediction implements Runnable {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("Enter P to make a prediction: ");
            Scanner in = new Scanner(System.in);
            String response = in.next();
            while(true){
                if(response.toUpperCase().equals("P")){
                    pmDemo.makePrediction();
                    response = "";
                    System.out.println("Enter P to make a prediction: ");
                    response = in.next();
                }
            }
        }
    }