JAVA jar包转.NET dll文件注意事项

发布时间 2023-08-08 11:58:07作者: 小1小

一、配置等

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包。

将依赖包一起打包:自己查吧