在我的項目中,我需要使用VC++調用Jar文件中的方法。有沒有辦法從VC++調用jar文件中的方法。如果示例代碼在那裏,那麼它會有很大的幫助。如何從Visual C++調用jar文件中的方法?
在此先感謝! 阿倫
在我的項目中,我需要使用VC++調用Jar文件中的方法。有沒有辦法從VC++調用jar文件中的方法。如果示例代碼在那裏,那麼它會有很大的幫助。如何從Visual C++調用jar文件中的方法?
在此先感謝! 阿倫
IKVM.Net(http://www.ikvm.net)是一個.NET實現的Java庫,這是不是真的,你想要的東西,但它包括一個名爲ikvmc
(見http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=Ikvmc)一個命令行工具,這將翻譯Java字節 - 編碼爲.Net IL代碼,並生成一個.Net程序集DLL。我已經成功地使用它將Java庫轉換爲一個程序集,然後將它包含在C#項目中。
如果您使用C++作爲目標語言,那麼您必須使用JNI(http://java.sun.com/docs/books/jni/)。 JNI定義了一個接口來交換數據並從/到Java和本地代碼調用方法。將一個JNI包裝器寫入一個包含方法返回並接受輸入簡單參數(即本機類型,不收集,不包含數組)的類是非常簡單的。當方法涉及類,集合,數組等等時,手動編寫JNI包裝會變得很麻煩。本文提供了一個很好的概述:http://java.sys-con.com/node/45840。在這種情況下,您可以評估封裝發生器,如GIWS:http://www.scilab.org/products/other/giws。
如果您使用.NET環境作爲您的目標平臺,那麼IKVM是一種選擇。然而,當我們不得不爲一個真正的項目做到這一點時,我們更喜歡JNBridge,並且我們使用這個(商業)工具取得了很大的成功。我們沒有評估IKVM出於商業原因:我們的客戶只需要正式支持的中間件。
對!使用GIWS。用JNI手工寫這個是一場噩夢! (有太多的函數調用檢查,內存被釋放等) – Sylvestre 2013-02-20 22:55:35
爲您想要嘗試的場景添加更好的描述。所以你向其他人展示了你對這個問題的想法。你還想讓C++在Jar(類似於zip)文件中調用一個方法嗎?這是沒有意義的。 – 2011-03-24 05:38:36
@C約翰遜:這個問題確實有道理。有時候你需要使用Java庫的功能,而且你更願意在.Net中編寫代碼,因爲這就是你所知道的。在編寫與供應商SOAP接口連接的應用程序時,我遇到了同樣的問題。供應商爲界面提供一個客戶端庫作爲Jar文件。我不是從頭開始重寫客戶端,而是使用'ikvmc'將它翻譯成.Net並在C#中構建我的應用程序。 – 2011-03-24 05:49:23