首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 呼叫 Java 代碼:IKVM 實戰指南

     編輯:關於C語言

IKVM 是一個強大的工具,能將 Java 位元碼轉換為 .NET 組件,讓 C# 專案直接引用 Java 類庫。本文記錄從環境搭建到跨語言調用的完整流程。

環境準備

  1. 下載 IKVM 組件:
    • ikvm-0.40.0.1.zip(核心編譯器)
    • ikvmbin-0.40.0.1.zip(執行時組件)
    • openjdk6-b12-stripped.zip(OpenJDK 類庫)
  2. 解壓 ikvm-0.40.0.1.zip,將 `%IKVM_HOME%\bin` 加入系統 PATH。
  3. 獲取 `IKVM.OpenJDK.ClassLibrary.dll`(可從 Debian IKVM 或 rayfile 下載對應 .deb/.tar.gz 解壓獲取)。

Java 代碼編譯與轉換

// SimpleReturnString.java
package com.helloikvm.simple;

public class SimpleReturnString {
    public String returnString() {
        return "Hello, IKVM!";
    }

    public void throwException() throws Exception {
        throw new Exception("Hello, Exception!");
    }
}

編譯並打包:

javac SimpleReturnString.java
jar cvf IKVM.jar com/helloikvm/simple/SimpleReturnString.class

使用 ikvmc 轉換為 .NET 組件:

ikvmc -out:IKVM.dll IKVM.jar

C# 專案引用與調用

新建 C# 專案,添加以下 DLL 參考:

  • `%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll`
  • `%IKVM_HOME%\bin\IKVM.Runtime.dll`
  • `%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll`
  • `IKVM.OpenJDK.ClassLibrary.dll`
  • 剛生成的 `IKVM.dll`

C# 調用代碼:

using com.helloikvm.simple;

namespace IKVMTest
{
    public partial class Form1 : Form
    {
        private void btnTest_Click(object sender, EventArgs e)
        {
            SimpleReturnString simpler = new SimpleReturnString();
            String returnString = simpler.returnString();
            txtTest.Text = returnString;
        }
    }
}

關鍵提示

  • 確保所有依賴 DLL 版本一致,避免執行時錯誤。
  • IKVM 支持大多數 Java 標準庫,但部分原生方法可能需額外處理。
  • 異常傳遞:Java 拋出的異常會自動包裝為 .NET 異常,可直接 catch。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved