.NET不能直接调用Java的类,但IKVM.NET解决了这个问题。

IKVM.NET提供了两种方式调用java的类:

①把生成的jar包放置在程序根目录,然后通过创建URL实例的方式去调用类中的方法

②把生成的jar转换为dll,然后在程序中引用转化后的dll,之后就可以像调用c#类方法一样的方式来使用。官网说明文档

这里主要对第②种方式操作说明,步骤如下:

1、IKVM.NET官网上去下载程序包。地址:http://www.ikvm.net/download.html

我下载的版本为7.2.4630.5,文件包为:ikvmbin-7.2.4630.5.zip

2、解压包ikvmbin-7.2.4630.5.zip,然后打开cmd,通过cd定位到解压后的bin目录:~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin

将需要转化为dll的jar包拷贝到~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录下

执行ikvmc命令,将jar包转化为dll程序集。命令语句如下:

ikvmc -target:library EncryptUtil.jar

其中EncryptUtil.jar 为待转换为dll的jar包

出现 note IKVMC0002: Output file is " EncryptUtil.dll" 代表转换成功。可以在~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录找到转换后新生成的文件EncryptUtil.dll

3、在.NET程序中引用生成的EncryptUtil.dll文件和~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录下的IKVM.OpenJDK.Core.dll文件,然后就可以像使用C#类一样的方式来使用EncryptUtil类了

Console.Write(EncryptUtil.base64Decoder("测试"));

调用EncryptUtil的静态方法base64Decoder。

补充说明:所要转为为dll的jar包,应该包含完整的依赖引用。

在.NET中调用Java的类的更多相关文章

  1. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  2. kettle中调用java类

    kettle中调用java类 有时须要在kettle调用java类,如:验证.查询或自己定义加密等.有时甚至连主要的数据訪问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应 ...

  3. 在scala中调用java代码

      详细代码请见https://github.com/lujinhong/scalademo 在scala中调用java代替非常非常简单,直接调用即可 (一)一个简单示例 1.创建一个java类 pa ...

  4. 第4篇-JVM终于开始调用Java主类的main()方法啦

    在前一篇 第3篇-CallStub新栈帧的创建 中我们介绍了generate_call_stub()函数的部分实现,完成了向CallStub栈帧中压入参数的操作,此时的状态如下图所示. 继续看gene ...

  5. 第29篇-调用Java主类的main()方法

    在第1篇中大概介绍过Java中主类方法main()的调用过程,这一篇介绍的详细一点,大概的调用过程如下图所示. 其中浅红色的函数由主线程执行,而另外的浅绿色部分由另外一个线程执行,这个线程最终也会负责 ...

  6. 在JS中调用JAVA变量

    在JS中调用JAVA变量可以,方法是:var JS变量名 = “<%=JAVA变量名 %>”<%中间写java代码,跟在JSP中一样%>在JAVA中 ,无法调用JS变量

  7. [Xcode 实际操作]九、实用进阶-(6)在Swift文件中调用Object-C的类和方法

    目录:[Swift]Xcode实际操作 本文将演示在Swift文件中调用Object-C的类和方法. 在项目文件夹[DemoApp]上点击鼠标右键 ->[New File]创建一个Object- ...

  8. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

  9. 线程的函数中调用MFC对话框类的变量

    线程的函数中调用MFC对话框类的变量多线程传输文件的对话框 现在想要在对话框上添加一个进度条 为进度条映射变量m_progress这就需要在传输一段文件后就更新m_progress的值使进度条前进 也 ...

随机推荐

  1. Jmeter自带录制功能

    版本更新迭代较快的情况下,通过自动化进行冒烟测试以判断版本准入,在无接口文档的情况下,如果进行自动化?Jmeter有一个自带的录制功能,可以通过录制,获取各个接口设计情况,下面介绍如何进行使用 1.打 ...

  2. leetcode-217存在重复元素

    leetcode-217存在重复元素 题意 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: ...

  3. springboot 学习之路 5(打成war包部署tomcat)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  4. mysql之事务管理

    本文内容: 什么是事务管理 事务管理操作 回滚点 默认的事务管理 首发日期:2018-04-18 什么是事务管理: 可以把一系列要执行的操作称为事务,而事务管理就是管理这些操作要么完全执行,要么完全不 ...

  5. Java代码优化总结(持续更新)

    1.对equals不熟 例子 if(user.get("s").equals("ss")){ //一堆代码 } 注:一旦前端页面传null值过来,就错了,nul ...

  6. redis sentinel集群的搭建

    背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...

  7. 方法调用 Controller的Action 参数

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  8. 暂别SQL Server,转战MySQL和Redis

    机缘巧合下找到一个愿意提供学习MySQL和Redis机会的岗位,于是要暂别SQL Server了. 后续一段时间会陆续总结三年来SQL Server相关的工作经验,当做是暂别前的总结.

  9. Linux: yum配置说明

    下面是利用 man yum.conf 命令获取到的有关yum配置的说明: yum.conf(5) yum configuration file yum.conf(5) NAME yum.conf - ...

  10. RPM包的版本号比较

    版本号表示格式为 epoch:version-release,例如 1:2-3 第一条原则是 rpm 属性优先级 epoch > version > release        两个 r ...