zoukankan      html  css  js  c++  java
  • C#实现调用Java类中方法

    基本思路:

    用C#实现调用Java编写的类中的方法;重点是将Java编写的程序打包成Jar,然后使用开源工具IKVM将其转化成DLL控件,在.NET环境下调用。

    分为以下步骤:

    1.下载JDK6(注:JDK7下可能不支持,建议使用JDK6和Eclipse),进行安装,然后配置环境变量Path,将JDK安装的路径(例如:D:Program FilesJavajdk1.6.0_10in)添加到Path变量后面,如图所示:

    用cmd打开DOS框,输入javac就可以查看是否配置成功,配置成功会有较详细的信息展示。

    2.打开Eclipse编写Java应用程序,然后将其打包成Jar包(也可以在cmd下使用命令进行)

    对Hello.java文件进行编译后形成Hello.class文件,然后鼠标选中Hello.java文件然后右击选择Export(导出)然后选择JAR File点击下一步,完成就生成JAR文件。

    也可以使用cmd命令行进行手动生成JAR文件,如图所示:

    其中Test_JavaincomHello.class是生成的.class文件的路径,com.Hello.jar是你要生成的JAR文件的名称。

    3.到IKVM官方网站下载IKVM需要的组件 http://www.ikvm.net/

    ikvm-0.42.0.3.zipikvmbin-0.42.0.3.zipopenjdk6-b16-stripped.zip三个压缩文件,然后将ikvm-0.42.0.3.zip进行解压,将其解压的文件的路径添加到环境变量Path后面,类似于配置JDK时的做法。

    4.将转化的JAR包通过IKVM工具转化为DLL控件。

    在cmd下使用命令ikvmc -out:Hello.dll com.Hello.jar即可转化

    5.新建C#项目,将ikvm-0.42.0.3.zip解压出来的文件路径的bin目录下找到以下3个DLL控件IKVM.OpenJDK.Core.dll ,IKVM.Runtime.dll ,IKVM.Runtime.JNI.dll 将它们添加引用添加到C#项目中。然后添加自己生成的Hello.dll控件。

    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.ComponentModel;  
    4. using System.Data;  
    5. using System.Drawing;  
    6. using System.Linq;  
    7. using System.Text;  
    8. using System.Windows.Forms;  
    9. //引入命名空间(Java中包的名字到C#这边会转化成namespace)  
    10. using com;  
    11.   
    12. namespace WindowsFormsHello  
    13. {  
    14.     public partial class Form1 : Form  
    15.     {  
    16.         public Form1()  
    17.         {  
    18.             InitializeComponent();  
    19.         }  
    20.         private void btnClick_Click(object sender, EventArgs e)  
    21.         {  
    22.             //Java中的类  
    23.             Hello hello = new Hello();  
    24.             MessageBox.Show(hello.SayHello());  
    25.         }  
    26.     }  
    27. }
    28. 点击界面上的按钮,就会输出Hello,Java的信息。
  • 相关阅读:
    sizeof in C
    Get WIFI SSID and BSSID
    Swift和C混合Socket编程实现简单的ping命令&主机发现
    The different of bit Compiler
    Get all Ethernet information in Swift
    Get Local IP Address in Swift
    编译Unity3D Mono 加密DLL 填坑记
    spring-quartz 项目启动后执行一次job 之后按照规定时间执行job
    通过反射获取SSM的controller层的注解以及注解中的value值
    网页中高亮选中的关键字
  • 原文地址:https://www.cnblogs.com/kuangood/p/6169893.html
Copyright © 2011-2022 走看看