我使用JNI從C中啓動Java應用程序。儘管只要我使用控制檯應用程序,就可以快速完成此任務,但對於Swing-GUI,事情會變得棘手。我可以從Java調用C-Executable的函數嗎?
爲了讓應用程序「活着」,我使用了一個while循環,只要GUI沒有關閉就運行。當這個循環運行時,它總是請求,如果應用程序仍然通過請求布爾值運行。
while(javaRunning){
if(JNI_FALSE == env->CallBooleanMethod(obj, boolMethod))
javaRunning = false;
}
當Java函數WindowClosing(Event)被調用來指示用戶關閉窗口時,該值將被改變。
不幸的是,如果關閉窗口,這不起作用。即使窗口已關閉,C應用程序仍會嘗試請求布爾值。它顯然無法在窗口關閉前獲取布爾值。 更好的方法是從Java調用C代碼來通知它「WindowClosing」事件。
就我所見,如果C代碼是由Java加載(使用DLL)而不是通過調用接口加載C instanciates並啓動Java應用程序,那麼這將是可能的。 也許任何人都知道如何解決這個問題。
如果你已經回答了你自己的問題,你應該在下面發表答案作爲答案並接受它 - 這是完全有效的,並且避免每個人都打開問題,因爲他們認爲這是沒有答案的。 – Steve 2012-02-13 15:45:06
當然我會這樣做 - 不幸的是,我不能在接下來的6小時內這樣做... – SideEffect 2012-02-13 16:04:10