由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件(心塞。。),终于生成了一个可用的。在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些。

版本问题:

  由于现在java的jre都是用的1.8以上版本,所对应ikvm应该是8版本。而网上大多数教程都适用于jre1.7版本,即ikvm下载版本是7的,以此类推。查了几天的资料,没有符合要求的,就连stackoverflow上面都有很多遗留问题,无人回答,这也形成我写这篇文章的动力。。。

准备工作:

  ikvm.net 8.1版本转换工具下载地址:

  http://weblog.ikvm.net/2015/08/26/IKVMNET81ReleaseCandidate0.aspx

  下载后解压,并设置系统 > 高级系统设置 > 环境变量 > 系统变量path:添加ikvm中bin文件路径

转换步骤:

  一定要在一个非default包下建立java文件,例如新建school包,里面java文件第一行是package school;

  无依赖jar:

  在写好的java目录中,ftp输入cmd打开命令窗口(或者按住shift再右键->在此处打开命令窗口)

  javac XXX.java进行编译

  ikvm XXX.class生成dll文件

  # 这里可能和网上说的不大一样,可能是ikvm升级成8的原因,普遍方法都试了,转出来的dll没一个能用的。。

  有依赖jar:

  # 我写的没有依赖第三方jar,因此这个没有具体试,但极力推荐以下两种办法

  1. 先试试上面的那个

  2. 先把所依赖的jar包用以下命令转换成dll:ikvmc -out:XXXX.dll XXX.jar

  再用如下命令转换目标jar文件,可以有多个-reference(可以用-r代替)

  ikvmc -target:library -reference:depend1.dll –reference:depend2.dll xx.jar

  !注:转换dll时任何一个error或warning都算转换失败

使用步骤:

  !注:java文件必须在一个特定的package XXX中,所有需要调用的方法都显示声明public,才可以调用!使用时,using XXX;

   因为是用ikvm转换的,所以还要调用以下几个dll文件(这里用的是ikvm8)

  IKVM.Runtime.JNI.dll

  IKVM.Runtime.dll

  IKVM.OpenJDK.Core.dll

  这些文件都可以在ikvm\bin文件夹中找到。

  再using school;(本例中)

  然后就可以正常调用类中方法,和在java中调同一包下不同类方法相同。

祝一切顺利~

在jre1.8版本下,使用ikvm将jar转换为dll,以供c#调用的更多相关文章

  1. jre1.8使用ikvm.net8将jar转换为dll以供c#调用

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件,终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. 版本问题: ...

  2. 关于IE11版本下JS中时间判断的问题

    最近在做代码的优化及浏览器的兼容问题.遇到了谷歌.火狐.360兼容模式.IE(8以上)版本对时间判断大小的问题 . 在谷歌.火狐.360.IE11以下IE8以上版本下 var d1="201 ...

  3. .net(C#)在vs2010版本下的MVC如何配置才能切换静态页面(html)

    由于vs2010用的人比较多,虽然建mvc项目vs2010可能还不成熟,但鉴于每个人的成长有限,每个地方的资源有限,最主要的是为了解决问题,所以先不管那么多了. 用vs2010为公司网站建站,要求js ...

  4. Centos6.4版本下搭建LAMP环境

    Centos6.4版本下搭建LAMP环境 配置yum mkdir/mnt/cdrom mount/dev/cdrom  /mnt/cdrom 装载光盘 vi /etc/yum.repos.d/Cent ...

  5. Groovy在不同JDK版本下的性能差异

    Groovy作为一种动态语言,性能和JAVA比肯定是差不少,根据网友的测试,由于测试环境,场景和编译参数的不同,大概有差2到7倍的差距 那么同样的Groovy,在不同的JDK版本下,会有着怎样的差异呢 ...

  6. IE低版本下实现html5的placeholder(表单提示)功能

    placeholder 属性提供可描述输入字段预期值的提示信息(hint). 该提示会在输入字段为空时显示,并会在字段获得焦点时消失. 注释:placeholder 属性适用于以下的 <inpu ...

  7. CentOS-Minimal版本下安装telnet服务和xinetd服务

    默认在CentOS-Minimal版本下没有安装telnet和xinetd服务. 1.安装telnet [root@localhost ~]# rpm -qa | grep telnet  --检查是 ...

  8. Ubuntu 17.04版本下,opencv进行源码编译安装

    本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...

  9. ELK 6.X 版本下xpack破解

    ELK 6.2.2 版本下xpack破解 1.下载xpack 先下载最新版本的 x-pack,里面包含了 es,kibana,logstash 新版本的x-pack 下载地址:https://arti ...

随机推荐

  1. 【星云测试】开发者测试(4)-采用精准测试工具对dubbo微服务应用进行测试

    简介:本文主要目的是把现今主流的Dubbo框架项目和精准测试进行对接,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能达到对项目质量的保证. 本次环境搭建 ...

  2. Web—11-手机端页面适配

    流式布局: 就是百分比布局,非固定像素,内容向两侧填充,理解成流动的布局,成为流式布局 视觉窗口: viewport是移动端持有.这是一个虚拟的区域,承载网页的. 承载关系:浏览器—->view ...

  3. 【mySQL】 - 主键

    什么是主键? 对于表中的每一行数据,都会有一个字段或一组字段,用于标识自己的唯一性,这样的一个或一组字段,就叫主键 如果没有这个主键,那么对于表中的每一行的管理,会陷入混乱,我要更新某一特定行的数值, ...

  4. 剑指Offer_编程题之用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.

  5. C# Web Service简单使用

    第一步 打开VS,新建一个项目 第二步  创建一个ASP.NET 空 Web应用程序 我这里用的是VS2017 第三步 添加一个Web 服务(ASMX) 右键解决方案-->添加-->新建项 ...

  6. windows7平台 nginx+python 环境搭建

    参考了这篇文章,感谢原文作者:https://blog.csdn.net/foxgod/article/details/78929201 最近正在学习Python,发现除了写一点py脚本在idlex上 ...

  7. 文件句柄W模式

    f1=open('lo',encoding='utf-8',mode='w')f1.write('w4567')print(f1.tell())f1.close() #tell 告诉指针的位置(按字节 ...

  8. ACM1013:Digital Roots

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

  9. electron安装与使用

    系统 WIN10 X64 1. python-2.7.15.amd64.msi 2. node-v10.4.1-x64.msi 3. VS2015 community(社区版) 4. npm conf ...

  10. Ruby 配置vimrc

    https://ruby-china.org/topics/19315 mv ~/Downloads/vim-distinguished-develop/colors/*.vim ~/.vim/col ...