我正在工作的项目一直在使用 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