为什么我的Eclipse Helios调试时会踩到Path.register(WatchService,Kind <! - ? - > ...)?

时间:2012-03-08 18:31:38

标签: java eclipse debugging

我在Junit 4课程中有这样的代码:

Path dir = Paths.get("/tmp/testDir");
dir.toFile().mkdir();
WatchService watchService = FileSystems.getDefault().newWatchService();
dir.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
    StandardWatchEventKinds.ENTRY_DELETE);

当我尝试跳过Eclipse Helios调试透视图中的最后一个语句时,相关的线程表明它是“Stepping”并且永远不会返回。为什么呢?

当我尝试使用Maven命令“mvn test”执行Junit类时,同样的行为(挂在Path.register()调用上)显然也会发生(至少那个假设与我的类失败一致)见)。

这是我的JVM:

$ $JAVA_HOME/bin/java -version
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

1 个答案:

答案 0 :(得分:0)

冒着回答我自己的问题的风险,我已经学习了关于Path.register()方法的以下内容:1)如果JUnit测试中的所有其他线程都被挂起,它显然不会返回; 2)它执行速度不足以捕获JUnit测试创建的第一个文件。因此,Eclipse调试挂起并且Maven测试在完全相同的时间点失败 - 但原因各不相同。