jre1.8使用ikvm.net8将jar转换为dll以供c#调用
由于合作方使用.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#调用的更多相关文章
- 在jre1.8版本下,使用ikvm将jar转换为dll,以供c#调用
由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件(心塞..),终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. ...
- 使用ikmv将jar转换为dll,在.NET中直接调用
ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...
- 用IKVMC将jar转成dll供c#调用
用IKVMC将jar转成dll供c#调用 ikvmc c# dll jar 用IKVMC将jar转成dll供c#调用 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar-> ...
- 如何制作Jar包并在android中调用jar包
android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...
- java生成jar并用ikvm生成dll供C#调用
最近想尝试用C#做NB_IOT北向API接口的访问.北向API的接口的访问需要证书的双向认证,而C#不支持双向认证,所以就使用IKVM在C#中跑JAVA程序实现HTTPS请求部分. 步骤如下: 一.使 ...
- jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)
博文链接 http://www.cnblogs.com/xckk/p/4609444.html 一. Eclipse环境下安装与配置Jpcap 相关源程序.jpcap jar包,dll包,帮助文档 ...
- jar转dll
IKVM http://www.cnblogs.com/luckeryin/archive/2012/03/28/2421274.html
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来 ...
- 【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 鼠标右键项目,然后属性,然后java buildpath 然后order and ex ...
随机推荐
- 高效搭建lnmp环境
1:安装nginx sudo apt-get install nginx 检测 nginx : sudo nginx -t 出现如下表示成功 2:安装配置m ...
- 一种轻便且灵活的js模板的思路
一种轻便且灵活的js模板的思路 项目地址:https://github.com/j20041426/template 思路背景 在Vue.React.Angular等大前端框架异军突起的今天,写前端时 ...
- 修改wampsever默认密码
wamp初始默认mysql账号:root 密码: 空 准备修改为,账号:root 密码:xys829475 1.在phpMyAdmin界面中点击[用户],将用户概况中的所有用户名为[root]的用户的 ...
- Java综合题目
分支, 循环, 数据类型 1, 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2, 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13... ...
- Windows10系统PHP开发环境配置
Windows下搭建(Apache+PHP+MySQL)=>WAMP Linux下搭建(Apache+PHP+MySQL) =>LAMP PHP开发环境配置一般有套件安装和自定义安装两种方 ...
- 感知器算法--python实现
写在前面: 参考: 1 <统计学习方法>第二章感知机[感知机的概念.误分类的判断] http://pan.baidu.com/s/1hrTscza 2 点到面的距离 3 梯度 ...
- Web如何应对流量劫持?
虽然互联网经过多年的发展,可是网站使用的底层协议仍是 HTTP,HTTP 作为一种明文传播协议,所有的传输数据都是明文,我们都知道在通信中使用明文(不加密) 内容可能会被窃听,同时网站存在被劫持的风险 ...
- [转载]无旋treap:从单点到区间(例题 BZOJ1500&NOI2005 维护数列 )
转自ZZH大佬,原文:http://www.cnblogs.com/LadyLex/p/7182631.html 1500: [NOI2005]维修数列 Time Limit: 10 Sec Mem ...
- 在django中集成ckeditor富文本
目前用的比较多的富文本插件有百度的ueditor.ckeditor.kindeditor等,其中ueditor和kindeditor比较美观,ckeditor的皮肤较少.但是ueditor加载较慢,k ...
- Fortran调用C语言小计
先简单记录下问题,以后再给续解决方案 1,关于fortran中module的使用 2,没有参数可以正常调用,当需要传递参数时,由于两者语言的差异,字符串结束符号不同,应该注意 3,关于调用C函数时,调 ...