学习啦>知识大全>方法百科>产品使用方法>

.net 调用 jar 方法

陈哲凡分享

  NET平台不可以直接调用JAR包的,要么用IKVM之类的工具将JAR包转成DLL,要么用.NET把JAR包里的代码重写。下面是学习啦小编为大家带来一篇.net 调用 jar 方法,希望能帮助到大家。

  .net 调用 jar 方法(一)

  一、将已经编译后的java中Class文件进行打包;

  Eclipse或myeclipse进行Export选择jar即可。或者使用命令

  如:将某目录下的所有class文件夹全部进行打包处理;

  使用的命令:jar cvf test.jar -C com/ .

  其中test.jar为要生成的jar包;com/ . 为指定的当前目录下的文件夹,该文件夹包括子文件夹及class文件;

  cmd->到java class文件目录下->jar cvf 要生成的jar包名称.jar java类文件名.class

  二、到IKVM官方网站下载IKVM需要的组件

  三、设置路径

  解压ikvmbin-0.46.0.1.zip,并将%IKVM_HOME%\bin添加到path中。此处的%IKVM_HOME%是指解压后ikvm的主目录。

  四、将java的jar包转换为.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 调用 jar 方法(二)

  1、把所需的.class文件放到winnt\java\trustlib目录

  2、如果引用了相关jar文件,把其中引用到的相关.jar文件放到winnt\java\packages目录,在我的电脑-->属性-->高级-->系统变量,添加classpath为值其,量变引用的jar文件,如c:\winnt\java\packages\ldapfilt.jar;c:\winnt\java\packages\ldapjdk.jar;c:\winnt\java\packages\ldapsp.jar;.中间用分后最,开隔号用小数点结束

  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 得到交换中心配置接口,并且传人参数

  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");

  }  

    374713