我正在参与的项目一直使用Java 6和jpathwatch (.95),现在正在升级为Java 7。目前在Windows 7和2008 Server上运行。我正在重构部分代码以使用新的Java 7 NIO,这相对来说是比较简单的 - 甚至可以使用NIO.2替换jpathwatch。然而,我们代码中的文件监视区域开始失败了单元测试。似乎Java 7 NIO无法捕获到其他机器的UNC路径的更改。
\\otherMach\path\to\watch.
为了测试,我实现了Java NIO教程站点http://docs.oracle.com/javase/tutorial/essential/io/fileio.html中的代码,然后创建了一个重复类,在其中交换了jpathwwatch导入而不是Java NIO导入。 jpathwatch适用于UNC路径,但Java NIO则不适用。 它似乎能够注册并返回位置的初始事件密钥:(样本输出)
INFO: Watching: \\otherMach\path\to\watch
DEBUG: Added: \\otherMach\path\to\watch
INFO: Got event key: sun.nio.fs.WindowsWatchService$WindowsWatchKey@1f26ecd2
INFO: event key for: \\otherMach\path\to\watch
但是它从此就不再识别任何进一步的更改。
jpathwatch可以注册和报告目录和文件事件(尽管它在注册后不会立即报告初始事件)。
INFO: Watching: \\otherMach\path\to\watch
DEBUG: Added: \\otherMach\path\to\watch
INFO: Got event key: name.pachler.nio.file.impl.WindowsPathWatchService$WatchRecord@79a7bd3b
INFO: event key for: \\otherMach\path\to\watch
INFO: EVENT RECEIVED: ENTRY_CREATE file/dir created - \\otherMach\path\to\watch\New folder
INFO: Got event key: name.pachler.nio.file.impl.WindowsPathWatchService$WatchRecord@79a7bd3b
INFO: event key for: \\otherMach\path\to\watch
INFO: EVENT RECEIVED: ENTRY_CREATE file/dir created - \\otherMach\path\to\watch\New Text Document.txt
这是尽管在jpathwatch讨论中看到网络监视不被支持 - 请注意Uwe Pachler的回应,涉及UNC路径 - http://sourceforge.net/p/jpathwatch/discussion/888207/thread/8ea778de/?limit=25#0037 有人成功监视了UNC路径和Java 7 NIO.2吗?还有其他或更近期的解决方案吗?
谢谢,
-mjash