最近和公司搞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();

就这样大功告成了。

用java写的后台方法可以提供给C#调用吗?(转)的更多相关文章

  1. Java——写一个求和 “方法”

    在c语言中叫做函数 撸代码: import java.math.*; import java.util.Scanner; /*导入一个 math包 * BigDecimal 精确小数 * BigInt ...

  2. C# 程序开始主要是写类和方法 的基本步骤和调用方法

    主程序的使用方式以及调用方法字段.属性.方法 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  3. SpringMVC实现一个controller写多个方法

    MultiActionController与ParameterMethodNameResolver在一个Controller类中定义多个方法,并根据使用者的请求来执行当中的某个方法,相当于Struts ...

  4. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  5. [改善Java代码]覆写变长方法也循规蹈矩

    建议6:覆写变长方法也循规蹈矩 在Java中,子类覆写父类中的方法很常见,这样做既可以修正Bug也可以提供扩展的业务功能支持,同时还符合开闭原则(Open-Closed Principle),我们来看 ...

  6. JAVA写JSON的三种方法,java对象转json数据

    JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...

  7. java 中使用ajax调用后台方法注意事项

    java 中使用ajax调用后台方法注意事项,后台方法一定要加@ResponseBody jQuery.validator.addMethod("checkRuleName",fu ...

  8. java 访问后台方法顺序混乱

    今天遇到后台接值顺序混乱的问题. 环境:前台ajax请求后台方法.前台页面会频繁访问这个ajax. 现象:访问后台方法的顺序混乱. 怎么发现的问题:数量小访问没有问题,今天压力测试发现的问题. 解决办 ...

  9. 8人/天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整开源于 Github)

    Github: https://github.com/iccb1013/Jade.Net 我们只消耗了8人/天的时间,完成了全部工作,基于我们 Jade.Net 的开源后台代码,任何小规模的后台管理系 ...

随机推荐

  1. 介绍linux设备驱动编程

    目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和Linux API进行应用 ...

  2. python课程:python3函数

    摘自廖雪峰的网站:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316 ...

  3. 4、基于JZ2440之编写测试代码处理(处理图片识别人脸)

    1.代码如下: void detectAndDisplay(Mat image) { CascadeClassifier ccf; //创建脸部对象 //ccf.load(xmlPath); //导入 ...

  4. AE开发技术文档--8种数据访问方法

    转自原文 AE开发技术文档--8种数据访问方法 1.shapefile IWorkspaceFactory pWorkspaceFactory; pWorkspaceFactory = new Sha ...

  5. 基于phonegap开发app的实践

    app开发告一段落.期间遇到不少问题,写篇文章记录一下. 为虾米要用phonegap 开发app,至少要考虑android和ios两个版本号吧,android偶能够应付,ios表示全然木有接触过.于是 ...

  6. POJ 3624 Charm Bracelet 0-1背包

    传送门:http://poj.org/problem?id=3624 题目大意:XXX去珠宝店,她需要N件首饰,能带的首饰总重量不超过M,要求不超过M的情况下,使首饰的魔力值(D)最大. 0-1背包入 ...

  7. sublime text2 基本配置及结合Python 环境

    参考: http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html http://www.zhihu.com/question/ ...

  8. stm32 DMA+timer+DAC

    是有延迟的:

  9. 【33.10%】【codeforces 604C】Alternative Thinking

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  10. [转] Python 爬虫的工具列表 附Github代码下载链接

    转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...