最近想尝试用C#做NB_IOT北向API接口的访问。北向API的接口的访问需要证书的双向认证,而C#不支持双向认证,所以就使用IKVM在C#中跑JAVA程序实现HTTPS请求部分。

步骤如下:

一、使用Eclipse编写好北向API请向的JAVA部分代码并打包。如图:

1、代码编写

2、生成jar

3、将项目中依赖的包添加到生成的jar中,因为生成jar时有些依赖包是不存在的,提前将依赖包加入jar中也方便使用ikvmc一次生成dll,而不需要在ikvmc中依次将依赖包导入。

二、使用ikvmc生成dll,因为北向的API使用的是JDK8以上,因此选用ikvm-8.1.5717.0版本,该版本支持jdk8

1、将生成的jar复制到ikvm-8.1.5717.0\bin中,使用命令提示符进入该目录,使用ikvmc -out:XX.dll XX.jar命令生成dll,如图:

注意:该使用生成输出时不能报错否则生成不成功,报警信息可根据情况忽略。

三、将生成的dll与IKVM.Runtime.dll、IKVM.Runtime.JNI.dll、IKVM.OpenJDK.Core.dll拷贝到C#项目中并引用(PS:直接这里拷贝IKVM的dll老是报找不到该文件的错误,很纠结!我是通过NuGet添加对应版本的IKVM才可以的)。

编写C#的程序并调用,如图:

运行!成功!!!!

java生成jar并用ikvm生成dll供C#调用的更多相关文章

  1. 用IKVMC将jar转成dll供c#调用

    用IKVMC将jar转成dll供c#调用 ikvmc c# dll jar 用IKVMC将jar转成dll供c#调用 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar-> ...

  2. Go 程序编译成 DLL 供 C# 调用。

    Go 程序编译成 DLL 供 C# 调用. C# 结合 Golang 开发   1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 ex ...

  3. Matlab函数编译成dll供c调用

    一 编译dll 在Command Window窗口中输入mbuild -setup,然后会出现语句,是否安装编译器,选择n,因为机子上已经安装了C/C++/C#的编译器,选择VS2010.

  4. Delphi编写DLL供C#调用的实例

    Delphi中编写的Dll: library TestDLL; { Important note about DLL memory management: ShareMem must be the f ...

  5. [笔记]Delphi 2007写DLL供VC调用实例

    考虑如下几种常用情况: - VC传入int,返回int- VC传入char *,返回int- VC传入char *,返回char *及int 为简化问题,传递的字符串参数只考虑ANSI格式,不考虑UN ...

  6. [转]myeclipse 生成JAR包并引入第三方包

    myeclipse 生成JAR包并引入第三方包 我用的是myeclipse8.0 首先用myeclipse生成JAR 一.生成JAR包 1.点选项目右键—>Export 2.Java—>J ...

  7. java自定义jar包让jemeter使用

    背景:可能在做定义化的要求上,jmeter原有的jar包,已经不能满足我们,就需要自己写一个方法,以下就是写入的一个模拟post的请求,在jmeter中使用的案例 一:写代码 1.代码中的有两个包,原 ...

  8. jre1.8使用ikvm.net8将jar转换为dll以供c#调用

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件,终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. 版本问题: ...

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

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件(心塞..),终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. ...

随机推荐

  1. OSS文件上传到阿里云

    <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script&g ...

  2. 新建ui文件及相应.h和.cpp文件

    1.在Qt Creator中新建一个任意的项目(如untitled): 2.在该项目中添加QT设计师界面类:   3.将新建的3个文件(.ui..h..cpp)拷贝到目标项目文件夹中: 4.分别在目标 ...

  3. 【转载】MessageFormat.format方法

    MessageFormat.format方法实例 public static void main(String[] args) { String a= "aaa"; String ...

  4. 八大排序算法——归并排序(动图演示 思路分析 实例代码java 复杂度分析)

    一.动图演示 二.思路分析 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序 1.  向上归并排序的时候,需要一个暂存数组用来排序, 2.  将 ...

  5. Tsinghua 2018 DSA PA3简要题解

    CST2018 3-1-1 Sum (15%) 简单的线段树,单点修改,区间求和. 很简单. CST2018 3-1-2 Max (20%) 高级的线段树. 维护区间最大和,区间和,左边最大和,右边最 ...

  6. 关于ajax的跨域

    在前端开发中,跨域是经常遇到的问题,也是面试最喜欢问的问题,究其根本原因,是浏览器的同源策略所致,是浏览器为了避免不同域名不能共享cookie以及locationstorage等等,发起请求的时候无法 ...

  7. week5

    本节大纲: 1.模块讲解 2.hashlib and hmac 3.random 4.shelve 5.shutil 6.time and datetime 7.os and sys 8.re 9.x ...

  8. Centos7 Firewall

    1.1 firewall启停设置 [root@tomcat ~]# systemctl stop firewalld.service #关闭firewall [root@tomcat ~]# syst ...

  9. mysql 关于数据库和数据表的基本操作

    -- 备注: -- .每一条mysql语句后面都需要加上半角分号 -- .可以用``符号(1键旁边的那个键)将字段名称引用起来,如`Name` -- .mysql在windows下不区分大小写,在li ...

  10. Vue混入

    Vue 混入 混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项. 数据对象合 ...