WinForm调用jar包的方法分析

作者:何问起 时间:2023-11-17 04:09:46 

本文实例讲述了WinForm调用jar包的方法。分享给大家供大家参考,具体如下:

因为工作需要,需要做一个数据上传的程序,客户规定的是:数据接口采用http连接,采用JSON-RPC轻量级远程调用协议。所以决定用winform做一个管理界面(其中还包括其他的功能),java完成数据的传输,用winform调用jar包来完成客户需求。

具体做法如下(参考至https://www.jb51.net/article/41110.htm,后期我做了一些备注和调整):

一、将已经编译后的java中Class文件进行打包;打包命令JAR

如:将某目录下的所有class文件夹全部进行打包处理;

使用的命令:jar cvf test.jar -C com/ .

其中test.jar为要生成的jar包;com/ . 为指定的当前目录下的文件夹,该文件夹包括子文件夹及class文件;

二、到IKVM官方网站下载IKVM需要的组件  http://www.ikvm.net/或者直接到下载页面https://sourceforge.net/projects/ikvm/files/

ikvmbin-7.2.4630.5.zip

(有的博客说需要下载ikvmbin-0.42.0.3.zip或者ikvmbin-0.46.0.1.zip,这个主要取决你的jar包用的jdk是哪个版本,我的是jdk1.7,所以就下载的ikvmbin-7.2.4630.5.zip,目前2016.3.21我看ikvm只支持到1.7不知道后期是否会更新,怎么2012-12-10之后就停更了?)

三、设置路径

解压ikvmbin-7.2.4630.5.zip,环境变量里添加IKVM_HOME变量,如下图

WinForm调用jar包的方法分析

并将%IKVM_HOME%/bin添加到path中。此处的%IKVM_HOME%是指解压后ikvm的主目录。

四、将java的jar包转换为.dll控件

使用的命令:ikvmc -out:IKVM.dll test.jar

其中IKVM.dll为将要生成的.dll控件文件名;test.jar为之前打包好的jar包文件。

成功的输出:


IKVM.NET Compiler version 7.2.4630.5
Copyright (C) 2002-2012 Jeroen Frijters
http://www.ikvm.net/

五、在winform项目中添加所需的控件

1、新建一个C# winform项目,首先添加一下必须的DLLs (我为了省事儿把bin下的所有dll文件都添加到引用里头了)

方法:邮件项目的引用->添加引用->浏览,找到dll添加即可。

有博客说需要添加IKVM.OpenJDK.Core.dll、IKVM.Runtime.dll、IKVM.Runtime.JNI.dll

2、添加已生成的.dll文件

将之前生成好的.dll文件引用到项目中(需要注意的是,如果该dll更新成最新版本了,需要将其更新到添加引用的引用文件夹下)

六、测试

在winform项目中使用java类,其方法同java。但对包的引用使用C#的语法using

源代码:

Java源代码:


package com.zht;
//要调用的Java类
public class Test {
//要调用的Java方法
public String returnString() {
 return "Hello, zht!";
}
}

C#窗体源代码:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using com.zht;
namespace KIVMTest
{
public partial class Form1 : Form
{
 public Form1()
 {
  InitializeComponent();
 }
 private void Form1_Load(object sender, EventArgs e)
 {
  Test t = new Test();
  string str = t.returnString();
  MessageBox.Show(str);
 }
}
}

结果:

启动winform窗口后,显示提示窗口,内容为:Hello, zht!

希望本文所述对大家C#程序设计有所帮助。

标签:WinForm,jar包
0
投稿

猜你喜欢

  • C#操作串口通信协议Modbus的常用方法介绍

    2023-01-20 04:06:58
  • Activiti流程图查看实例

    2022-09-10 17:51:44
  • Java中关于二叉树的概念以及搜索二叉树详解

    2023-01-12 00:09:25
  • java web个人通讯录系统设计

    2022-09-14 11:12:15
  • C语言示例讲解while循环语句的用法

    2023-09-13 01:44:40
  • Android 调试工具用法详细介绍

    2022-07-18 21:34:05
  • java swing实现简单的五子棋游戏

    2022-04-16 22:10:10
  • 使用工具类-java精确到小数点后6位

    2021-06-24 20:45:39
  • 详解关于AndroidQ获取不到imsi解决方案

    2023-02-21 14:23:50
  • Android自定义View实现环形进度条的思路与实例

    2023-07-03 05:55:47
  • Java多线程工具篇BlockingQueue的详解

    2022-07-03 20:47:56
  • Java如何解析html中的内容并存到数据库详解

    2023-11-29 05:08:32
  • C#简单读取、改变文件的创建、修改及访问时间的方法

    2022-11-12 03:56:50
  • Android系统音量条实例代码

    2022-05-26 15:20:48
  • c# 引用类型与值类型的区别详解

    2021-05-27 00:34:33
  • java.util.concurrent.ExecutionException 问题解决方法

    2022-12-09 21:15:04
  • C# 计算DataTime的4种时间差的方法(相差天数、相差小时、相差分钟、相差秒)

    2022-12-08 10:37:07
  • 基于C#的图表控件库 ScottPlot编译visual studio 2022

    2022-05-02 10:24:13
  • 解决unity3d导入模型贴图材质丢失的问题

    2023-10-28 09:34:48
  • c#数据的序列化和反序列化(推荐版)

    2022-03-27 22:55:56
  • asp之家 软件编程 m.aspxhome.com