由于合作方使用.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. JVM学习笔记二:垃圾收集算法

    垃圾回收要解决的问题: 哪些内存需要回收? 线程私有区域不需要回收,如PC.Stack.Native Stack:Java 堆和方法区需要 什么时候回收? 以后的文章解答 如何回收? 首先进行对象存活 ...

  2. ZOJ - 3469 Food Delivery (区间dp)

    When we are focusing on solving problems, we usually prefer to stay in front of computers rather tha ...

  3. 度度熊与邪恶大魔王 DP | 完全背包

    Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...

  4. MyBatis String类型传递参数注意事项

    Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'ids' in 'class java.lang.String'. 后来改 ...

  5. 设计模式(2)--Singleton--单例模式--创建型

    1.模式定义: 单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 2.模式特点: (1)单例类只能有一个实例. (2)单例类必须自己创建自己的唯一实例. (3)单例类必须给所有 ...

  6. 使用jdbc调用存储,函数

    public class JdbcTest {        private Connection conn = null;    private PreparedStatement pst = nu ...

  7. oracle监控脚本【转】

    1. 监控事例的等待 select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_Time,0,1,0)) ...

  8. GitHub Student Developer Pack创建个人网站

    链接:https://zhuanlan.zhihu.com/p/20531579 这个开发包里有什么?作为学生开发者,如何最大化利用它的价值? Atom编辑器,GitHub推出的编辑器,和Sublim ...

  9. git入门(4)团队中git保管代码常用操作

    在团队中协作代码时候,一定要熟练使用以下git命令,不至于把代码库弄乱, PS:一定要提交自己代码(git push)时候,先进行更新本地代码库(git pull),不然提交异常 git常用命令 1· ...

  10. ios逆向过程中lldb调试技巧

    在ios逆向过程中,善于运用lldb,会给逆向带来很大的方便 一般的命令: 1.image list -o -f  看看各个模块在内存中的基址 2.register read r0  读取寄存器r0的 ...