-
(转自 https://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=24703&highlight )前言IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序。有些在java程序上可以实现的功能,但在C#中无法实现或者目前不知道怎么实现时(如带有特殊Padding的RSA2048加密,https双向认证等),可以考虑使用IKVM工具把已生成的jar转成dll供C#程序去调用。IKVM官网地址:https://www.nuget.org/packages/IKVM/由于IKVM7最高只支持jdk1.6编译出来的jar转换,建议使用最新版本IKVM8。使用说明前提条件:已通过java实现所需功能,且编译成一个jar,如MyHttpClient.jar。1. 在官网下载ikvm压缩包,这里用的是ikvmbin-8.1.5717.0.zip,解压到一个文件夹中,如C:\tools\ikvm-8.1.5717.0。2. 配置环境变量:在系统环境变量中增加IKVM_HOME:C:\tools\ikvm-8.1.5717.0,同时Path中增加%IKVM_HOME%/bin;3. 把MyHttpClient.jar放到一个工作目录下,如C:\tools\ikvm,在命令行中进入该目录,执行 ikvmc -target:library MyHttpClient.jar,即在当前目录下生产MyHttpClient.dll,这里只需要生成一个dll,如需生产可执行程序,可执行命令 ikvmc -target:exe xxx.jar。4. 在C#工程中引用MyHttpClient.dll以及IKVM相关的dll(C:\tools\ikvm-8.1.5717.0\bin目录下的以IKVM.开头的dll,这里为了方便全部引用了),C#中类的命名空间和java中的类的包名是一致的,如java中import com.huawei.myhttpclient,C#中为using com.huawei.myhttpclient特别注意:由于实际的java实现工程很多情况下都依赖一些第三方jar,比如举例的MyHttpClient工程使用了Apache httpClient相关组件实现的设置客户端,服务端证书,发送消息功能,依赖的jar有:commons-codec-1.9.jar,commons-logging-1.2.jar,httpclient-4.5.2.jar,httpcore-4.4.4.jar,httpmime-4.5.2.jar,在网上查询很多做法是把这些第三方jar依次编译成dll,执行ikvm命令时需要指定指定依赖的dll,比较麻烦,这里的做法是把这些jar用winrar等解压软件打开,然后里面的根目录文件夹org(里面包含了Apache httpClient编译生成的class),拷到MyHttpClient.jar中。补充:最近发现有人使用该方式,执行ikvmc编译命令时,命令行中报错:Class "org.apache.http.impl.client.DefaultHttpClient" not found.可能原因是导出jar时,Options选项中未勾选 Add Directory entries
上滑加载中
推荐直播
-
华为开发者空间玩转DeepSeek
2025/03/13 周四 19:00-20:30
马欣 山东商业职业技术学院云计算专业讲师,山东大学、山东建筑大学等多所本科学校学生校外指导老师
同学们,想知道如何利用华为开发者空间部署自己的DeepSeek模型吗?想了解如何用DeepSeek在云主机上探索好玩的应用吗?想探讨如何利用DeepSeek在自己的专有云主机上辅助编程吗?让我们来一场云和AI的盛宴。
即将直播 -
华为云Metastudio×DeepSeek与RAG检索优化分享
2025/03/14 周五 16:00-17:30
大海 华为云学堂技术讲师 Cocl 华为云学堂技术讲师
本次直播将带来DeepSeek数字人解决方案,以及如何使用Embedding与Rerank实现检索优化实践,为开发者与企业提供参考,助力场景落地。
去报名
热门标签