2024年1月18日发(作者:)
JNBridge在java和.net跨平台交互中的
使用(刘明,2012-10-2)
1:JNbridge简介
JNBridge实现java和.net交互的原理是将java的jar文件转换为可供.net调用的dll文件,然后在.net平台中可直接调用。
JNBridge下载地址:。
2:实际操作
JAXP不需要填写
准备工作:(配置)在网站注册信息(很简单),Paul Sommer会给你的邮箱发来邮件,给注册码(一个月的试用),如下,将第一行的JNBridgePro复制到那里就好。
当出现下面四行英文,说明Key是有效的,可以使用。
JNBridgePro v6.1 (.NET 2.0/3.0/3.5-targeted) trial
Copyright © 2001-2012, JNBridge, LLC. All rights reserved.
There are 32 days left in your trial license.
License location: D:Program Files (x86)JNBridgeJNBridgePro v6.1
打开JNB之后,出现如下界面,关闭即可。
2.1:将java类导出成jar文件
右键点击需要导出的java类文件,选择export,选择java——JAR file,点击next,
选择保存路径,输入jar名称,点击finish,jar文件就被成功导出到指定位置了
2.2:使用JNB Proxy工具将生产的jar文件转换成dll文件
(JNB Proxy工具分为.NET 2.0-3.0-3.5-targeted,.NET 4.0-targeted还有32位平台和64位平台4种版本,根据自身系统状况进行选择)
打开JNB Proxy工具,选择Create new .Net -> Java project,点击OK
选择Project—>
点击,找到需要转换成dll文件的jar文件,添加进来。如果使用了或者也就需要将他们一并添加进去。
添加好后点击OK,然后选择Project —> Add Classes from
找到要转换成dll文件的jar文件,即上一步Classpath中的jar文件(要转换的jar文件必须在Classpath中配置完成后再添加),然后将Environment中的包全部选中,然后点击中间的Add+
待Add+操作结束后,选中Project —>
键入生成出的dll文件的名称,点击保存
等待几分钟,就可生成dll文件了。
2.3:生成的dll文件在.net中的使用
打开vs,右击项目中的“引用”,选中添加引用,把上一步中生成的dll文件添加进来
还需要将JNBridge安装路径下的和添加进来
接下来配置工程的配置文件 ,以framework2.0为例
路径根据自身机器环境进行配置。
2.4:其他操作
解压之前导出的jar包,将其中包含类文件(com文件夹)添加到该.net工程下的Java文件夹下,这样才能调用到java中的类。
将JNBridge安装路径下的rlm932_(64位机器为rlm932_)复制到项目文件夹的bin—>Debug和obj—>Debug中(此文件为授权文件,不添加项目无法运行)(可以先将rlm932_、、、 、、添
加到bin/Debug下,再将rlm932_添加到obj/x86/Debug下,然后添加引用时就可以直接从bin/Debug导入,从而节约了时间)
2.5:将java的swing控件嵌入winform中
2.6:一个例子
Java代码:
package com;
import ;
import yout;
import ;
import ;
import ox;
import rk;
public class GetANode {
public TNetwork getNetWork(){
TDataBox box = new TDataBox();
Node node1 = new Node();
ation(100,100);
ment(node1);
Node node2 = new Node();
ation(300,300);
ment(node2);
Link link = new Link(node1,node2);
ment(link);
TNetwork nw = new TNetwork(box);
return nw;
}
public static GridLayout getGridlayout(){
return new GridLayout();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GetANode gan = new GetANode();
TNetwork network = Work();
JFrame jf = new JFrame();
e(800, 600);
}
(network);
ible(true);
aultCloseOperation(_ON_CLOSE);
}
C#代码:
using System;
using c;
using entModel;
using ;
using g;
using ;
using ;
using com;
using ing;
using k;
using ;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//private iner components = null;
private JavaControl jc;
//private javaHolder;
private iner components = null;
private panel1;
public Form1()
{
InitializeComponent();
orIllegalCrossThreadCalls = false;
TNetwork tw = new GetANode().getNetWork();
JPanel jp = new JPanel(dlayout());
(tw);
jc = new JavaControl(jp, 400,400);
(jc);
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
e();
}
e(disposing);
}
#region Windows 窗ä¡ã体¬?设¦¨¨计?器¡Â生¦¨²成¨¦的Ì?代䨲码?
///
/// 设¦¨¨计?器¡Â支¡ì持?所¨´需¨¨的Ì?方¤?法¤¡§ - 不?要°a
/// 使º1用®?代䨲码?编À¨¤辑-器¡Â修T改?此ä?方¤?法¤¡§的Ì?内¨²容¨Y。¡ê
///
private void InitializeComponent()
{
1 = new ();
dLayout();
//
// panel1
//
= ;
on = new (0, 0);
= "panel1";
= new (685, 324);
ex = 0;
// += new
ventHandler(1_Paint);
//
// Form1
//
aleDimensions = new (6F, 12F);
aleMode = ;
Size = new (685, 324);
(1);
= "Form1";
= "Form1";
// += new andler(1_Load);
Layout(false);
}
#endregion
}
}
遇到的一些问题:
VS2010有时候不能识别文件,所以需要将它移到D:Program FilesJava
x32jdk1.7.0_07jrelibext(即java拓展包里面,这样才可以访问到)
我做的东西:(图片采用绝对路径,相对路径没有试)


发布评论