JAVA jar包转.NET dll文件注意事项
一、配置等:
javaVersion :”1.8.0_151”
IKVM:ikvm-8.1.5717.0
IKVM下载地址:链接:https://pan.baidu.com/s/1mYutk0yghHxw2rOgFpDKJw
提取码:0777
IKVM需要配置环境 :将IKVM.NET的bin文件夹的地址添加到环境变量。
计算机右键属性–高级系统设置–高级–环境变量–在系统变量中找到PATH–将bin文件夹的地址添加进去
二、碰到的问题及解决方案
1.如果一个包依赖多个包怎么处理?
2.C#中怎么调用?
需要引用IKVM.NET提供的dll 。 到ikvm安装路径的bin目录中 找到相关的dll, 一般只需要IKVM.OpenJDK.Core.dll 。之后便可以调用dll中的java方法
另外:引用生成的dll时,中途产生的依赖项的dll也要引用 ;
调用方法时引入命名空间,jar包中的包名就是命名空间名称,不是dll的名称,比如包名一般是com.xxx.xxx,那么C#的命名空间就是com.xxx.xxx。
3.打包时如果有内部类需要将内部类的.class文件也放到jar包目录下。
4.如果执行发现C#代码执行结果与JAVA代码执行结果不一致,可能原因为IKVM的版本和文件不是最新,需要使用NewGet获取对应版本的IKVM。
5.包含main函数的jar包应该怎么处理?
包含main函数的jar包用命令ikvmc 执行的时候会直接生成.exe文件。我们需要dll文件应该直接使用-out命令指定文件格式。如:
Ikvmc -target:library xxx.xxx.jar -r:xxx.xxx.dll -out:xxx.xxx.dll
6.warning提示需要处理吗?应该怎么处理?
一般是warning class xxx not found
这种警告一般需要处理,因为有可能使用的方法就用到了警告类里面的方法。一般警告了哪个类,建议使用IDEA maven工具下载对应的jar包,将jar包转换成dll文件。再引入到需要生产的jar包中。
7.依赖包太多导致需要引入的dll文件多怎么处理?
一般我们依赖什么包就处理成dll文件再使用IKVMC命令引入到目标dll内,如果嫌弃项目需要引入的dll文件过多,那可以在打包目标jar包的时候将依赖包打包到一起,后再处理目标jar包。
将依赖包一起打包:自己查吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)