傳說中的IKVM.NET–讓你的.NET不僅僅是.NET

來源:互聯網
上載者:User

遇到一個技術盲點, 要搞定android應用程式套件apk中的某些檔案, 但是那玩意畢竟是偉大的java寫的, 本人苦苦翻譯終不得果. 只能百度一下看看有沒有能讓偉大的java代碼運行在咱的.NET平台上. 結果偶遇IKVM.NET, 此乃利器!

看了好多文章, 搜尋引擎一搜一大堆, 名字都叫"在.NET平台運行Java程式-IKVM.NET入門"發現不太適合初學者, (可能我也沒啥時間細看, 呵呵). 大家有興趣可以拜讀一下.

IKVM.NET是一個比較強大的工具, 裡麵包含了一個java虛擬機器的.net實現還有java類庫的.net實現. 據說現在的新版本已經支援jdk1.6了, 強大吧.
啥也別說, 先上官網地址: http://www.ikvm.net/  想下載新版就到裡面去找, 相信大家E文都比我強, 哈哈.

我沒有深入去研究這個工具, 只是做了簡單的應用, 強大之處還得大家各自體會.

IKVM.NET中包含了一個工具--ikvmc.exe (此工具是在msdos環境下啟動並執行, 不能直接點!)
這個工具可以將打好包的jar檔案轉換成windows的exe可執行檔或者dll動態庫檔案, 當然要看jar包的打法了, 還有裡面是否有main函數了.
說個順序吧
1. 首先拿到jar包(前面都是偉大的java做的事情, 小弟不是很明白).
2. 開啟控制台, 轉到你解壓IKVM.NET的目錄.
3. 輸入命令轉換jar包, 命令如下:
    ikvmc.exe C:\test.jar -out:C:\test.exe -target:exe
參數說明: C:\test.jar 就是原始jar檔案, 不用多說. -out:C:\test.exe 就是要轉換成的檔案, -out代表輸出, C:\test.exe代表要產生的檔案及路徑. -target:exe 就是要進行什麼樣的轉換, 此處如果需要轉成dll, 則應寫成 -target: library, 當然在-out參數中組建檔案的尾碼名應該為dll才對.

4. 關鍵的一步已經過去了, 下面是收尾工作, 我們來進行在.NET中調用.
    網上好多文章都介紹了, 應該將IKVM.NET中的XXXX.dll連同自己產生的dll一同引用到自己的工程當中, 我不太贊同這種說法, 有可能會有遺漏, 也有可能會有冗餘. 我建議的方法是, 先建立一個控制台程式(這種輕量級的程式, 啥都行), 然後將3步中產生的dll檔案引用進來, 編譯, 報錯, 添加IKVM.NET中相應的dll, 再編譯, 再報錯, 再添加, 直至不報錯為止.
    都成功了之後, 在你的.NET程式頂端的using或者Import時就可以看到java.lang, 諸如此類的命名空間了. 下面該幹什麼了呢? 我相信你懂的, 哈哈.

要特別注意一點, 使用IKVM.NET的時候, java與.NET之間只有一些基礎資料型別 (Elementary Data Type)是可以相通的, 如int, String等, 複雜點的類型是不能通用的, 這點要切記, 很關鍵, 否則java代碼是沒法與.NET代碼混合起來寫的!

廢話了一堆, 其實只是踩在高人踩過的水坑裡罷了, 呵呵. 祝大家的java和.net技術越來越牛X~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.