用java写的后台方法可以提供给C#调用吗?(转)

最近和公司搞C#的同事联合搞了一个项目,我把我这边的数据加密之后传给C#,然后C#在对接收到的数据解密。可是问题来了,我这边用JAVA加密的数据C#的同事怎么也解密不出来,于是我就想到了可不可以将JAVA解密的方法转成C#的dll文件给到C#那边调用,于是网上搜索了下还真有,下面就说下我的具体操作。

    步骤一:到IKVM官方网站下载IKVM需要的组件 http://sourceforge.net/projects/ikvm/files/ikvm/

            我选的是“0.42.0.3”版本下面的组件,具体如下图所示:

 

步骤二:将ikvm-0.42.0.3.zip解压到一个路径,我解压到了C:\ikvm下面,然后在电脑的环境变量里面加多一个环境变量,变量名为IKVM_HOME,变量值为前面解压的目录“C:\ikvm\ikvm-0.42.0.3”,然后在Path变量里面加入“;%IKVM_HOME%\bin”就可以了,截图如下:

    步骤三:使用jar命令将已经编译后的java中Class文件进行打包,使用eclipse编译之后找到存放.class文件的classes文件夹,使用命令:“jar cvf test.jar -C classes/ .”,其中test.jar为要生成的jar包;classes/ . 为指定的当前目录classes下的文件,该文件夹包括子文件夹及class文件,生成的test.jar就在classes文件夹的同级目录,当然当前目录你也不一定要指定为classes,还可以指定为classes目录里面的子目录,截图如下:

步骤四:将上面打包好的jar包转换为.dll控件,执行命令:ikvmc -out:test.dll test.jar,test.dll,其中test.dll为要生成的dll文件名,test.jar就是第三步生成的jar包,截图如下:

步骤五:     截至步骤四生成dll文件的功能已经完成,接下来就是给C#端调用。C#端除了导入我们生成的dll外,还要导入的dll文件有:

%IKVM_HOME%/bin/IKVM.OpenJDK.Core.dll
%IKVM_HOME%/bin/IKVM.Runtime.dll
%IKVM_HOME%/bin/IKVM.Runtime.JNI.dll

网上说的是导入上面三个dll文件,但是我发现我还须导入:

%IKVM_HOME%/bin/IKVM.OpenJDK.Security.dll

%IKVM_HOME%/bin/IKVM.OpenJDK.Util.dll

当然那些包要导入不是绝对的,要看具体的功能代码,把dll发给C#调用发现取消那些dll在去%IKVM_HOME%/bin路径下面拷就可以了。

步骤六:如何调用生成的dll文件里面的方法呢?写法跟在java里面的写法一样。

例如java代码为:

                

  1.  
    package com.test;
  2.  
    //要调用的Java类
  3.  
    public class Test {
  4.  
    //要调用的Java方法
  5.  
    public String test() {
  6.  
    return "test is ok";
  7.  
    }
  8.  
    }

在C#里面调用方式为:

  1.  
    //引入dll文件
  2.  
    using com.test;
  3.  
     
  4.  
    //程序调用
  5.  
    Test test= new Test();
  6.  
    test.test();

就这样大功告成了。

猜你喜欢

转载自www.cnblogs.com/DreamRecorder/p/9238676.html