.net 調(diào)用 jar 方法
NET平臺不可以直接調(diào)用JAR包的,要么用IKVM之類的工具將JAR包轉(zhuǎn)成DLL,要么用.NET把JAR包里的代碼重寫。下面是學習啦小編為大家?guī)硪黄?net 調(diào)用 jar 方法,希望能幫助到大家。
.net 調(diào)用 jar 方法(一)
一、將已經(jīng)編譯后的java中Class文件進行打包;
Eclipse或myeclipse進行Export選擇jar即可?;蛘呤褂妹?/p>
如:將某目錄下的所有class文件夾全部進行打包處理;
使用的命令:jar cvf test.jar -C com/ .
其中test.jar為要生成的jar包;com/ . 為指定的當前目錄下的文件夾,該文件夾包括子文件夾及class文件;
cmd->到java class文件目錄下->jar cvf 要生成的jar包名稱.jar java類文件名.class
二、到IKVM官方網(wǎng)站下載IKVM需要的組件
三、設置路徑
解壓ikvmbin-0.46.0.1.zip,并將%IKVM_HOME%\bin添加到path中。此處的%IKVM_HOME%是指解壓后ikvm的主目錄。
四、將java的jar包轉(zhuǎn)換為.dll控件
使用的命令:ikvmc -out:D:\com.J2Csharp.dll D:\com.J2Csharp.jar
其中com.J2Csharp.dll 為將要生成的.dll控件文件名;com.J2Csharp.jar為之前打包好的jar包文件。
五、在C#項目中添加所需的控件
1、新建一個C#.NET項目,首先添加一下必須的DLLs
%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll
%IKVM_HOME%\bin\IKVM.Runtime.dll
%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll
2、添加已生成的.dll文件
將之前生成好的.dll文件加載到C#項目中
六、測試
在C#項目中使用java類,其方法同java。但對包的引用使用C#的語法using
源代碼:
Java源代碼:
package com;
public class J2Csharp { public String toString(){ return "88888888888"; } }
C#窗體源代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using com; namespace CJTtst { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { J2Csharp js = new J2Csharp(); MessageBox.Show(""+js.toString()); } } }
.net 調(diào)用 jar 方法(二)
1、把所需的.class文件放到winnt\java\trustlib目錄
2、如果引用了相關jar文件,把其中引用到的相關.jar文件放到winnt\java\packages目錄,在我的電腦-->屬性-->高級-->系統(tǒng)變量,添加classpath為值其,量變引用的jar文件,如c:\winnt\java\packages\ldapfilt.jar;c:\winnt\java\packages\ldapjdk.jar;c:\winnt\java\packages\ldapsp.jar;.中間用分后最,開隔號用小數(shù)點結(jié)束
3、重啟IIS,就可以使用class中對象了。
4、在.net文件中使用示例:以下是代碼片段:
import com.founder.exchange.*;
CyExchangeManager cyExchangeManager=
new CyExchangeManager.( "com.foundercy.exchange.CyHttpExchange")
CyExchangeManager cem = new CyExchangeManager(
"com.foundercy.exchange.CyHttpExchange");
//C 得到交換中心配置接口,并且傳人參數(shù)
cem.put("exchangeip","xxx.xxx.xxx.xxx" );
cem.put("exchangeport", "8080");
cem.put("appcode", "002");
cem.put("setyear", "2005");
cem.put("taskname", "TaskName");
if (! cem.connected().equalsIgnoreCase("ws_Ok")){
System.out.println("< Founder>Not Connected");
return ;
} else {
System.out.println("< Founder>Connected Succeed");
}