Java 使用Apache Commons io的TailerListenerAdapter跟踪文件不起作用

Java 使用Apache Commons io的TailerListenerAdapter跟踪文件不起作用,java,multithreading,apache-commons-io,apache-tailer,Java,Multithreading,Apache Commons Io,Apache Tailer,我想使用Java跟踪文件内容,我尝试使用ApacheCommonsIO的Tailer和TailerListenerAdapter。我已经将storm-core-1.1.1.jar包含在类路径中,以获得所需的依赖项;但是TailerListenerAdapter的“handle”方法根本没有被调用,执行过程被卡在主方法中。下面是代码: import org.apache.storm.shade.org.apache.commons.io.input.TailerListenerAdapter; i

我想使用Java跟踪文件内容,我尝试使用ApacheCommonsIO的Tailer和TailerListenerAdapter。我已经将storm-core-1.1.1.jar包含在类路径中,以获得所需的依赖项;但是TailerListenerAdapter的“handle”方法根本没有被调用,执行过程被卡在主方法中。下面是代码:

import org.apache.storm.shade.org.apache.commons.io.input.TailerListenerAdapter;
import org.apache.storm.shade.org.apache.commons.io.input.Tailer;
import org.apache.storm.shade.org.apache.commons.io.input.TailerListener;

import java.io.File;
public class LogTailTest {

    /**
     * TailerListener implementation.
     */
    static public class ShowLinesListener extends TailerListenerAdapter {
        @Override
        public void handle(String line) {
            System.out.println(line);
            System.out.println("inside handle");
        }
    }

    public static void main(String args[]) {


        TailerListener listener  = new ShowLinesListener();
        File file = new File("C:/LogFiles/Radius-log");
        System.out.println("inside main");
        Tailer tailer = Tailer.create(file, listener);
        tailer.run();

       }
}

如果执行保持在main方法中,那么至少意味着它没有崩溃。
通过在show
ShowLinesListener
中实现
TailerListener
接口的其他方法,您可以进一步了解正在发生的情况。有一些方法可以处理文件不存在、文件旋转、一般异常等。

如果执行保持在主方法中,那么至少意味着它没有崩溃。 通过在show
ShowLinesListener
中实现
TailerListener
接口的其他方法,您可以进一步了解正在发生的情况。有一些方法可以处理文件不存在、文件轮换、一般异常等。

您不应该直接调用“tailer.run()”。相反,你应该:

TailerListener listener  = new ShowLinesListener();
File file = new File("C:/LogFiles/Radius-log");
System.out.println("inside main");
Tailer tailer = Tailer.create(file, listener);
Thread thread = new Thread(tailer);
thread.setDaemon(true); // optional
thread.start();
您不应该直接调用“tailer.run()”。相反,你应该:

TailerListener listener  = new ShowLinesListener();
File file = new File("C:/LogFiles/Radius-log");
System.out.println("inside main");
Tailer tailer = Tailer.create(file, listener);
Thread thread = new Thread(tailer);
thread.setDaemon(true); // optional
thread.start();