winform调用jar包
因为工作需要,需要做一个数据上传的程序,客户规定的是:数据接口采用http连接,采用JSON-RPC轻量级远程调用协议。所以决定用winform做一个管理界面(其中还包括其他的功能),java完成数据的传输,用winform调用jar包来完成客户需求。
具体做法如下(参考至http://blog.csdn.net/black0707/article/details/5769366,后期我做了一些备注和调整):
一、将已经编译后的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变量,如下图

并将%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!
winform调用jar包的更多相关文章
- Unity调用Android的两个方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- Loadrunner11.0调用Jar包
又好几天不写东西了,是不是意味着最近没有大的进步,时时敲打自己. 今天把loadrunner如何调用Jar包搞定了,现在把配置的过程中需要注意的东西写下来,分享给小伙伴儿,减少他们在前行路上的弯路. ...
- html实现调用jar包
整体思路:html引用URL protocol-本地注册表key,key对应某一c#写的exe可执行文件,由exe可执行文件调用cmd,cmd执行jar包. 1.添加注册表: Windows Regi ...
- (转载)Python 的 JPype 模块调用 Jar 包
Python 的 JPype 模块调用 Jar 包 背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接 ...
- Python调用jar包中的方法
[本文出自天外归云的博客园] 需求 最近在后台项目代码中一段自定义的AES加解密的程序在平时的测试工作中应用频繁.因为写脚本经常会需要使用,而经过各种尝试,比如jpype等,都不尽如人意.最后转换思路 ...
- 如何制作Jar包并在android中调用jar包
android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...
- jmeter 调用jar包 本地加密
1.因为加密接口是有我们自己加密方式,所有加密包由开发提供,获得加密包后方式jmeter目录/lib/ext文件夹中 2.选择引入加密包 3.添加BeanShell Sampler和Debug Sam ...
- python实战===用python调用jar包(原创)
一个困扰我很久的问题,今天终于解决了.用python调用jar包 很简单,但是网上的人就是乱转载.自己试都不试就转载,让我走了很多弯路 背景:python3.6 32位 + jre 32位 + ...
- Unity调用Android的两种方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
随机推荐
- Android Design Support Library——Navigation View
前沿 Android 从5.0开始引入了Material design元素的设计,这种新的设计语言让整个安卓的用户体验焕然一新,google在Android Design Support Librar ...
- 【java初探外篇01】——关于Java修饰符
本文记录在学习Java语言过程中,对碰到的修饰符的一些疑问,在这里具体的拿出来详细学习和记录一下,以作后续参考和学习. Java修饰符 Java语言提供了很多修饰符,但主要分两类: 访问修饰符 非访问 ...
- MongoDB安装配置教程
数据是每一前端人员必定接触的一样,所有的数据都是后端来编写,如果自己想练习项目,却没有数据,而是写一些假数据,去编写,或者通过json-server搭建一个数据,今天我们就通过MongoDB来搭建一个 ...
- JAVA微信服务号开发简记
现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.所以这边做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说明. 基本认证信息说明 ...
- ActiveMQ——activemq的报错见解javax.jms.JMSException: Software caused connection abort: recv failed
activeMQ出现javax.jms.JMSException: Software caused connection abort: recv failed的问题解决 一直找不到原因,原来是在本地的 ...
- Eclipse 下Spring cloud项目集成开发插件Spring Tool Suite (STS) 安装
安装eclipse插件 Help->Eclipse Marketplace-> Search中查找"Spring Tool Suite (STS) for Eclipse&quo ...
- Tomcat学习总结(11)——Linux下的Tomcat安全优化
1.web.xml配置及修改: 站点默认主页: <welcome-file-list> <welcome-file>index.html</welcome-file> ...
- 【K8S学习笔记】Part1:使用端口转发访问集群内的应用
本文介绍如何使用kubectl port-forward命令连接K8S集群中运行的Redis服务.这种连接方式有助于数据库的调试工作. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同 ...
- mongorestore 一次踩雷
1.在做mongodb备份后,研发突然有个需求说先看一下昨天备份里面的数据,进行一下核实.因为那部分数据今天已经删除,由于使用---gzip.--archive做的备份,所以必须导入到同名的数据库里面 ...
- git第二节----git clone与git tag
@git 远程克隆(clone)仓库,将远程工程clone到本地仓库:默认克隆远程master 分支 git clone https://github.com/kaokaozhu/Test.git ...