package keylogger;
public class TestKeys {
private static int i = 0;
private native void setWinHook();
private native void unregisterWinHook();
public static void main(String args[]) {
TestKeys o = new TestKeys();
System.loadLibrary("MyHook"); // load the library that registers the hook
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("After the call to System.loadLibrary");
}
};
new Thread(r,"new thread").start();
}
}
當我啓動該程序時,dll
被加載並且工作。但 new thread
內的聲明未打印。這是爲什麼 ? 爲什麼java線程不啓動?該dll代碼不會立即返回。事實上,它無法返回。爲什麼java線程不啓動?
和:
是否當程序遇到聲明System.loadLibrary
一個新的線程開始?
請原諒downvote請: - || –
也許您的「MyHook」庫的JNI_OnLoad函數阻止您到達Thread.start行。你檢查了嗎? – Jerome
@Jerome根據[aix](http://stackoverflow.com/users/367273/aix)的答案,線程應該啓動。 –