一、配置等:
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包。
将依赖包一起打包:自己查吧
标签:包转,JAVA,文件,xxx,jar,dll,NET,IKVM From: https://www.cnblogs.com/wenthing/p/17613792.html