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

本文记录了一位开发者在将Java类转换为.NET DLL过程中遇到的版本不匹配和依赖处理难题,详细介绍了如何使用IKVM.NET 8.1版本进行转换,并提供了转换步骤和所需环境配置。遇到类似问题的程序员可以参照此指南,避免转换陷阱。
摘要由CSDN通过智能技术生成

由于合作方使用.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中调同一包下不同类方法相同。

祝一切顺利~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值