JNotify seems to do what you require.
Polling a filesystem (say, a directory for update time changes) won’t impose a significant load on your system, and shouldn’t be discounted. Apps like Tomcat etc. use this for managing hot deploys with few problems.
It’s not a lot of help now, but the upcoming Java 7 has a WatchService precisely for this.