2015-04-08 9 views
0

Я пытаюсь запустить модифицированный пример кода из http://jnotify.sourceforge.net/sample.html Но получаю следующее сообщение об ошибке:Нарушение прав доступа при запуске jnotify образец кода

фатальная ошибка была обнаружена с помощью Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d980b1f, pid=7308, tid=10568 

JRE version: 6.0_45-b06 
Java VM: Java HotSpot(TM) Client VM (20.45-b01 mixed mode windows-x86) 
Problematic frame: 
V [jvm.dll+0xa0b1f] 

Я видел это раньше, когда не было ссылки на слушателя, как в немодифицированном образце кода, и сборщик мусора удалил его. Но здесь я держу ссылку на него. Кто-нибудь видит проблему?

public static void sample() throws Exception { 
    JNotifyListener listener = (JNotifyListener) new Listener(); 
    // path to watch 
    String path = System.getProperty("D:/Pathname"); 

    // watch mask, specify events you care about, 
    // or JNotify.FILE_ANY for all events. 
    int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED 
      | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED; 

    // watch subtree? 
    boolean watchSubtree = true; 

    // add actual watch 
    int watchID = JNotify.addWatch(path, mask, watchSubtree, 
      listener); 

    // sleep a little, the application will exit if you 
    // don't (watching is asynchronous), depending on your 
    // application, this may not be required 
    Thread.sleep(1000000); 

    // to remove watch the watch 
    boolean res = JNotify.removeWatch(watchID); 
    if (!res) { 
     // invalid watch ID specified. 
    } 
} 

static class Listener implements JNotifyListener { 
    public void fileRenamed(int wd, String rootPath, String oldName, 
      String newName) { 
     print("renamed " + rootPath + " : " + oldName + " -> " + newName); 
    } 

    public void fileModified(int wd, String rootPath, String name) { 
     print("modified " + rootPath + " : " + name); 
    } 

    public void fileDeleted(int wd, String rootPath, String name) { 
     print("deleted " + rootPath + " : " + name); 
    } 

    public void fileCreated(int wd, String rootPath, String name) { 
     print("created " + rootPath + " : " + name); 
    } 

    void print(String msg) { 
     System.err.println(msg); 
    } 
} 

ответ

0

У вас есть ошибка в коде. ;-)

заменить

String path = System.getProperty("D:/Pathname"); 

по

String path = "D:/Pathname"; 
+0

Ах да спасибо, не могли бы вы, пожалуйста, удалите информацию о имени пути из вашего поста. Я вставил «анонимный» фрагмент кода раньше, но он не был распознан как фрагмент кода. когда я сделал это правильно, я вставил unanonymized версию. спасибо за указание на это. – floquet22

+0

и да, сейчас он отлично работает. как только у меня появится моя репутация, чтобы я мог отдать свои пальцы за стол, я сделаю это. – floquet22

+0

@ floquet22 Вы должны быть в состоянии принять ответ, если он решит вашу проблему. – SubOptimal