回答
- 確保環境變量CLASSPATH,包含 提及 「[WINDIR] \的Java \ Classes下\ Classes.zip」 和 「C:」(假設 即C:是開發驅動器)。
- 請確保您的「[SDK-Java] \ Bin」目錄包含在您的 路徑(用於JavaH,JVC和JView)中。
- 確保爲命令行的使用正確設置了Visual C++。 有關詳細信息,請參閱您的Visual C++文檔。
編寫Java代碼:
public class TestJNI { public native void greetings(); static { System.loadLibrary("greet"); } public static void main(String args[]) { new TestJNI().greetings(); } }
編譯Java文件:
jvc TestJNI.java
運行JAVAH上生成的類文件:
javah -jni TestJNI
編寫C /基於生成的頭文件的C++代碼:
#include "TestJNI.h" #include <stdio.h> JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) { printf("Hello from Visual C++!"); }
編譯C/C++代碼:
cl greet.cpp -Ic:\sdk-java.31\include -Fegreet.dll -MD -LD
測試應用程序:
jview TestJNI
見rkosegi重新鏈接的線程。 '可信的代碼' - 重要的是要理解。 aviad已經涵蓋了一個方法的許多細節。這篇文章只是關注部署本地人。
使用本機的小應用程序的真正問題是讓本機安裝在小應用程序可以訪問它們的地方。這就是使用Java Web Start部署applet變得有用的地方。根據OS &體系結構(32/64位),JWS不僅可以對本機的下載進行分區,還可以在應用程序的運行時類路徑上使本機可用,以便加載。
從「新一代」插件(例如Sun的1.6.0_10 +)開始,JWS可以部署嵌入式小程序(以前它只能自由浮動地啓動它們)。
但是,那麼爲什麼你想要一個applet呢?
更好替代方案通常是直接從鏈接啓動自由浮動框架(使用JWS)。同樣的安全限制適用,但部署更容易,用戶體驗更好。
嗨@Andrew我只想說,爲了讀這個問題的人的好處,JWS不是奇蹟般的治療方法。它有一個令人討厭的錯誤,緩存將被破壞,然後它不會再加載你的應用程序,直到手動清除緩存。如果我記得好的話,在購買Sun之前,這個bug已經存在,他們只是不在乎。我們有一個支持人員在他的一天大部分時間向電話會計師解釋如何清除他們的Java緩存(許多人只是不明白)。不好! – 2012-06-04 18:42:40
*「JWS不是一個奇蹟般的治療方法。」*由於這很明顯,所以我不知道你爲什麼要提起它。 *「它有一個討厭的bug」*所有不平凡的應用程序。有錯誤。 – 2012-06-05 00:39:42
「所有不平凡的應用程序都有錯誤」是的。問題是在這種情況下,*他們不修復它*。我認爲任何依靠運行/部署產品的框架/工具中的任何錯誤都很糟糕,以至於很可能會讓許多客戶付出代價,以及哪些*您無法修復或自行解決問題*,值得一提的是未來的用戶。我不是批評你,而是WebStart;對不起,你似乎正在親自採取。 – 2012-06-05 11:09:30
- 1. 從c#應用程序全局調用.dll的方法
- 2. 從C#dll調用C++應用程序的方法
- 3. 從DLL調用方法時C#應用程序塊
- 4. 從Java應用程序調用C#dll
- 5. 從C#應用程序調用C++ DLL
- 6. 從小應用程序訪問dll
- 7. 通過JNI從小應用程序調用DLL
- 8. 從JavaScript調用小應用程序的方法
- 9. 當我嘗試從小應用程序調用方法
- 10. 從WinDev調用DLL方法
- 11. 如何從JSNI調用Dll方法在GWT Web應用程序中使用?
- 12. 從DLL調用應用程序創建的Delphi DLL
- 13. 當從後臺調用應用程序時調用方法
- 14. 調用MediapPlayer從應用程序調用方法
- 15. 從後臺調用我的應用程序後調用方法
- 16. 從C#程序通過.dll調用VB.NET方法
- 17. 監視DLL的應用程序調用
- 18. PowerBuilder應用程序調用Delphi DLL
- 19. GWT JSNI調用小程序方法
- 20. java調用小應用程序的方法
- 21. 從我的小部件中調用第三方應用程序
- 22. 從子類應用程序代表調用應用程序的deletegate方法
- 23. 從另一個C#應用程序調用C#應用程序的方法
- 24. 從vb.net應用程序中的另一個應用程序調用方法
- 25. 從我的.NET應用程序調用現有Com應用程序的方法
- 26. 調用從web應用程序到android應用程序的方法
- 27. 從Windows應用程序調用ASP.NET應用程序中的方法
- 28. 無法從應用程序代理調用View Controller方法
- 29. 如何從android應用程序調用遠程方法
- 30. Java:從LOCAL小應用程序調用.dll ...我做錯了什麼
可能的重複http://stackoverflow.com/questions/3719065/java-calling-dll-from-a-local-applet-im-doing-something-wrong或http://stackoverflow.com/questions/ 1713403 /調用一個小應用程序通過jni檢查此爲啓動:http://www.javaworld.com/jw-07-1998/jw-07-java-win32.html – rkosegi 2012-03-07 08:32:07