C#实现调用Java类中方法
基本思路:
用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控件。
- 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;
- //引入命名空间(Java中包的名字到C#这边会转化成namespace)
- using com;
- namespace WindowsFormsHello
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void btnClick_Click(object sender, EventArgs e)
- {
- //Java中的类
- Hello hello = new Hello();
- MessageBox.Show(hello.SayHello());
- }
- }
- }
点击界面上的按钮,就会输出Hello,Java的信息。
C#实现调用Java类中方法的更多相关文章
- thymeleaf模板引擎调用java类中的方法(附源码)
前言 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决 ...
- Jsp中如何通过Jsp调用Java类中的方法
Jsp中如何通过Jsp调用Java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:cn.tianaoweb.com; 2.再在包中添加一个类:如 package com; public ...
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- 如何在Mybatis的xml文件调用java类的方法
在mybatis的映射xml文件调用java类的方法:使用的是OGNL表达式,表达式格式为:${@prefix@methodName(传递参数名称)} 1.如下代码所示:方法必须为静态方法:以下我只是 ...
- jsp中怎么调用java类中的方法
在jsp页面中先要,引入java类 例如: <%@page import="javabean.DbConn"%><!-- 引入包中的"类" - ...
- C#反射调用程序集类中方法
建立类 class OperatorClass { /// <summary> /// 加法 /// </summary> /// <param name="x ...
- C#A类派生类强转基类IL居然还是可以调用派生类中方法的例子
大家都知道在C#中,如果B类继承自A类,如果一个对象是B类型的但是转换为A类型之后,这个对象是无法在调用属于B类型的方法的,如下例子: 基类A: public class A { } 派生类B: pu ...
- JAVA 类中方法参数与返回值
无参无返回值的方法,用public void 方法名,来声明: 有参无返回值的方法,用public void 方法名,来声明: 有参有返回值的方法,用public int 方法名(int i,int ...
- QT 安卓 调用java类
用以下方式即可调用java类中的方法 QAndroidJniObject activity = QtAndroid::androidActivity(); QAndroidJniObject Devi ...
随机推荐
- Headfirst设计模式的C++实现——适配器(Adapter)
duck.h #ifndef _DUCK_H_ #define _DUCK_H_ class DUCK { public: ; ; }; #endif mallard_duck.h #ifndef _ ...
- ICBC中的路由设置
才去的中国工商银行,用身份证叫了A0076的号,前边还有26个人,闲来无聊果断拿出手机收取wifi.有两个ssid为ICBC的路由,信道分别是1号和6号,还好不需要密码,不过一会就连接上了. 那我先上 ...
- Centos7源码安装mysql及读写分离,互为主从
Linux服务器 -源码安装mysql 及读写分离,互为主从 一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...
- VirtualBox 安装虚拟机时出现错误 VT-x features locked or unavailable in MSR.
修改安装好的虚拟机的cup的个数重新启动的时候报了上述错误. 参考博文:http://blog.csdn.net/zklth/article/details/7019990 错误:VT-x featu ...
- 关于SQL优化的一个小试例子
原SQL: select ta.serialno, ta.accepttime, ta.subsnumber, ta.subsname, ta.cont ...
- 转:Java Annotation详解
转载自:http://william750214.javaeye.com/blog/298104 元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致 ...
- 背景CSS
.op_weather4_twoicon_day:hover .op_weather4_twoicon_hover { background-image: -webkit-linear-gradien ...
- CSS使块半透明方法,兼容IE6
前言 今天LOL玩机器人玩得真心不爽,实在崩溃,还是逛博客园比较爽些,记录自己的成长!说句实话我在编程方面确实是个菜鸟,菜到一种超神的地步,没一样自己特擅长的,悲催...... 废话少说,进入正题,H ...
- Maven引入依赖后自动下载并关联源码(Source)
好多用 Maven 的时候会遇到这样一个棘手的问题: 就是添加依赖后由于没有下载并关联源码,导致自动提示无法出现正确的方法名,而且不安装反编译器的情况下不能进入方法内部看具体实现 . 其实 eclip ...
- UVA 10651 Pebble Solitaire 状态压缩dp
一开始还在纠结怎么表示一个状态,毕竟是一个串.后来搜了一下题解发现了这里用一个整数的前12位表示转态就好了 ,1~o,0~'-',每个状态用一个数来表示,然后dp写起来就比较方便了. 代码: #inc ...