zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    Java Scanner
    Java 继承
    什么叫异常?什么叫错误? 如何捕获异常? 如何抛出异常? 说说finally和final的区别! 什么是JDK?什么是JRE?说说它们之间的区别? 说说字符常量和字符串常量的区别
    数据分析三剑客之Pandas时间序列
    Css样式布局之Flex弹性盒子布局
    memcached的安装和使用
    Flask 第十八话之Restful API
    Flask 第十七话之信号
    Flask 第十六话之钩子函数
    Flask 第十五话之请求上下文及全局全局存储g对象
  • 原文地址:https://www.cnblogs.com/jaejaking/p/5301151.html
Copyright © 2011-2022 走看看