基本思路:

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

分为以下步骤:

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

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

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

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

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

其中Test_Java\bin\com\Hello.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. namespace WindowsFormsHello
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19. private void btnClick_Click(object sender, EventArgs e)
  20. {
  21. //Java中的类
  22. Hello hello = new Hello();
  23. MessageBox.Show(hello.SayHello());
  24. }
  25. }
  26. }

点击界面上的按钮,就会输出Hello,Java的信息。

C#实现调用Java类中方法的更多相关文章

  1. thymeleaf模板引擎调用java类中的方法(附源码)

    前言 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决 ...

  2. Jsp中如何通过Jsp调用Java类中的方法

    Jsp中如何通过Jsp调用Java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:cn.tianaoweb.com; 2.再在包中添加一个类:如 package com; public ...

  3. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  4. 如何在Mybatis的xml文件调用java类的方法

    在mybatis的映射xml文件调用java类的方法:使用的是OGNL表达式,表达式格式为:${@prefix@methodName(传递参数名称)} 1.如下代码所示:方法必须为静态方法:以下我只是 ...

  5. jsp中怎么调用java类中的方法

    在jsp页面中先要,引入java类 例如: <%@page import="javabean.DbConn"%><!-- 引入包中的"类" - ...

  6. C#反射调用程序集类中方法

    建立类 class OperatorClass { /// <summary> /// 加法 /// </summary> /// <param name="x ...

  7. C#A类派生类强转基类IL居然还是可以调用派生类中方法的例子

    大家都知道在C#中,如果B类继承自A类,如果一个对象是B类型的但是转换为A类型之后,这个对象是无法在调用属于B类型的方法的,如下例子: 基类A: public class A { } 派生类B: pu ...

  8. JAVA 类中方法参数与返回值

    无参无返回值的方法,用public void 方法名,来声明: 有参无返回值的方法,用public void 方法名,来声明: 有参有返回值的方法,用public int 方法名(int i,int ...

  9. QT 安卓 调用java类

    用以下方式即可调用java类中的方法 QAndroidJniObject activity = QtAndroid::androidActivity(); QAndroidJniObject Devi ...

随机推荐

  1. linux下查看端口的连接数

    linux下,可以通过natstat命令来查看端口的连接状况,比如连接数 例如,查看9090端口的连接状况: 查看某个端口的连接数netstat -nat | grep -iw "9090& ...

  2. Vsftpd -- 验证方式

    vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问.本地用户和虚拟用户: 匿名访问:任何人无需验证口令即可登入FTP服务端. 本地用户:使用FTP服务器中的用户.密码信息. 虚拟用户:创建独 ...

  3. pngfix 实现Png图片透明效果

    1.http://www.jb51.net/codes/67324.html 2.DD_belatedPNG工具

  4. js:合同-已知起始日期、年限,自动计算截止日期

    dateAddYear('2016-01-01', '3') ;//返回:2018-12-31 浏览器:ie11,ff 46.0.1(成功)360v8.1(急速模式,成功) 浏览器:360v8.1(兼 ...

  5. ECSHOP模板设置,前台英文后台中文,无需复制

    很多做英文站的朋友 只想让前台显示为英文,后台依就保持中文.这个要如何来做呢?网上也看到类似文章,好像还要进行目录复制与覆盖.我下面这个方法更简单,无需复制. 第一步: 通过后台设置实现前台英文.进入 ...

  6. ora_reco_070361 hs message to agent event 等待事件

    现象描述:oracle通过透明网关查询Teradata数据库的表突然变得很慢,小表可以查询出来,大表干脆就出不来. 分析过程: 1.网络可以ping通,小表可以过来,说明网络和网关都没有什么问题的. ...

  7. python在linux制作图形界面(snack)

    snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snac ...

  8. 检测浏览器对HTML5和CSS3支持情况的利器——Modernizr

    Modernizr是什么? Modernizr 是一个用来检测浏览器功能支持情况的 JavaScript 库. 目前,通过检验浏览器对一系列测试的处理情况,Modernizr 可以检测18项 CSS3 ...

  9. Event Aggregator

    /** * Created with JetBrains WebStorm. * User: 宇乔 * Date: 13-8-2 * Time: 下午3:01 * To change this tem ...

  10. ping(1)

    /* ping program for learning IP protocol author: jeff date: 2014/10/25 */ #include <stdio.h> # ...