由于合作方使用.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.net8将jar转换为dll以供c#调用的更多相关文章

  1. 在jre1.8版本下,使用ikvm将jar转换为dll,以供c#调用

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

  2. 使用ikmv将jar转换为dll,在.NET中直接调用

    ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...

  3. 用IKVMC将jar转成dll供c#调用

    用IKVMC将jar转成dll供c#调用 ikvmc c# dll jar 用IKVMC将jar转成dll供c#调用 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar-> ...

  4. 如何制作Jar包并在android中调用jar包

    android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...

  5. java生成jar并用ikvm生成dll供C#调用

    最近想尝试用C#做NB_IOT北向API接口的访问.北向API的接口的访问需要证书的双向认证,而C#不支持双向认证,所以就使用IKVM在C#中跑JAVA程序实现HTTPS请求部分. 步骤如下: 一.使 ...

  6. jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)

    博文链接 http://www.cnblogs.com/xckk/p/4609444.html 一.   Eclipse环境下安装与配置Jpcap 相关源程序.jpcap jar包,dll包,帮助文档 ...

  7. jar转dll

    IKVM http://www.cnblogs.com/luckeryin/archive/2012/03/28/2421274.html

  8. Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来 ...

  9. 【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 鼠标右键项目,然后属性,然后java buildpath 然后order and ex ...

随机推荐

  1. HTTP学习

    HTTP(HyperText Transfer Protocol)全称"超文本传输协议" HTTP是基于 TCP/IP 协议的应用层协议 现在日常使用版本 HTTP/1.1 一个H ...

  2. jquery validate bootstrap 错误样式配置

    $().ready(function () { $("#commentForm").validate({ errorPlacement: function (error, elem ...

  3. jquery 的页面下拉选项

    <!-- field的属性对应数据库表的内容 --> <th field="ANSWERNUM" formatter="formatterOption& ...

  4. file-API 实现添加图片 预览缩略图(自己学习)

    首先看看 "效果图" : 我们最终实现的就是点击右侧的"相机"按钮添加想要添加的图片然后可以根据需要删除(点叉删除本条)或再次添加图片,并显示缩略图....走起 ...

  5. 原生JS元素怎么取消事件

    关于原生JS元素怎么取消事件,有3种方式 常规方法:removeEventListener 案例: <body> <div id="myDIV"> div ...

  6. C++ STL list详解

    一.解释: list是一种序列式容器.list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,list不仅是一个双向链表,而其还是一 ...

  7. 每周问题系列 - JavaFX界面没响应,Maven编译自动忽略rt包

    本人博客文章网址:https://www.peretang.com/weekly-problem-session-week-31/ 前言 新开一个系列, 用来记录每周遇到的问题 JavaFX界面没响应 ...

  8. Red Hat 9.0 Linux 分辨率修改

    Red Hat 9.0 Linux 分辨率修改 我是在VMware Workstation中装了一个红帽的Linux系统,装上之后发现分辨率有点低,是800x600的,看着很不舒服,然后就想着怎么样可 ...

  9. 今天聊一聊nuxt.js(上)

    背景 近期在做内部系统的重构,从一线业务彻底的重构,经过充分的考虑我们准备把这个项目打造成前台业务的试验站,比如ssr和一些其他的前沿技术的探索,积累充分的经验后待合适的契机应用到C端的项目中. 既然 ...

  10. Selenium对于对话框alert,confirm,prompt的处理

    html 源码: <html>                  <head>                      <title>Alert</titl ...