最近和公司搞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. 2019年Angular7——安装搭建路由

    Angular 中文官方:https://www.angular.cn/ 为什么要看Angular?我也不知道,因为公司有个Angular的项目要维护.听说Angular的版本已经到7了.以前没怎么玩 ...

  2. POJ 2752 Seek the Name, Seek the Fame (KMP)

    传送门 http://poj.org/problem?id=2752 题目大意:求既是前缀又是后缀的前缀的可能的长度.. 同样是KMP,和 HDU 2594 Simpsons' Hidden Tale ...

  3. 以Spring整合EhCache为例从根本上了解Spring缓存这件事(转)

    前两节"Spring缓存抽象"和"基于注解驱动的缓存"是为了更加清晰的了解Spring缓存机制,整合任何一个缓存实现或者叫缓存供应商都应该了解并清楚前两节,如果 ...

  4. bow lsa plsa

    Bag-of-Words (BoW) 模型是NLP和IR领域中的一个基本假设.在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分.B ...

  5. Python中字符串的解压缩

    今天在用Streaming-Python处理一个MapReduce程序时,发现reducer失败,原由于耗费内存达到极限了.细致查看代码时,发现有一个集合里保存着URL,而URL长度是比較长的,直接保 ...

  6. Berkeley DB基础教程 分类: H3_NUTCH 2014-05-29 15:21 2212人阅读 评论(0) 收藏

    一.Berkeley DB的介绍 (1)Berkeley DB是一个嵌入式数据库,它适合于管理海量的.简单的数据.如Google使用其来保存账户信息,Heritrix用其来保存froniter. (2 ...

  7. js判断是否微信客户端

    上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打 ...

  8. JQuery中Ajax详细参数使用案例

    JQuery中Ajax详细参数使用案例 参考文档:http://www.jb51.net/shouce/jquery1.82/ 参考文档:http://jquery.cuishifeng.cn/jQu ...

  9. [React Native] Animate Styles of a React Native View with Animated.timing

    In this lesson we will use Animated.timing to animate the opacity and height of a View in our React ...

  10. HDU4876:ZCC loves cards

    Problem Description ZCC loves playing cards. He has n magical cards and each has a number on it. He ...