Java连接.Net测试(二)
来源:互联网 发布:linux安装安卓软件 编辑:程序博客网 时间:2024/06/10 04:06
本节说明Java通过Com组件连接.Net(调用dll)实现方法及主要代码,如下:
1. VS2008新建-项目-C#-类库,取名,如:J2NByDllClassLibrary;
2. 添加-新建项-类:MyJ2N,编写代码(示例如下):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace J2NByDllClassLibrary
{
[Guid("3DB8FA5A-50FE-415d-B4D1-74EF249D46A2")]
public interface IMyJ2N
{
[DispId(1)]
string GetEncrypt(string str, string str2);
}
[Guid("7BE525EE-46AE-4cc5-B21A-F4BF558AD79E"), ClassInterface(ClassInterfaceType.None)]
public class MyJ2N : IMyJ2N
{
public MyJ2N() { }
public string GetEncrypt(string str, string str2) //此处的两个参数没用到,只是示例
可以传参
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++)
{
sb.Append(i + ",");
sb.Append("aa" + i + ",");
sb.Append("bb" + i + ",");
}
//sb.Remove(sb.Length - 2, 1);
//System.Console.WriteLine(sb.ToString());
return sb.ToString();
}
}
}
3. GUID生成:
打开Visual Studio命令提示,输入guidgen 命令调出工具。类型选择Registry Format,点击两次New
Guid,生成两个GUID,并分别COPY出来替换上面示例代码的interface和class类名处的GUID。
4. 设置强名称:
打开Visual Studio命令提示,输入:sn -k TestComkey.snk 生成TestComkey.snk 文件(生成文件的路
径可自己确定,我选择在项目所在文件夹的bin/debug/下,即转到该文件夹路径再执行SN命令)。
5. 右击程序名打开property窗口:
在应用程序标签中打开 “程序集信息” 将“使程序集COM可见”一项选中。再切换到生成标签将 “为
COM互操作注册”一项选中。在签名标签中选中“为程序集签名”,浏览选择刚刚生成的强名称文件
TestComkey.snk。
6. 生成:确认以上操作执行完并保存后,右击程序名选生成菜单,生成程序集。
7. 注册COM:
打开Visual Studio命令提示并进入程序的Debug目录,运行命令注册并放入缓存:
regasm J2NByDllClassLibrary.DLL /tlb:J2NByDllClassLibrary.tlb
gacutil -i J2NByDllClassLibrary.DLL
8. java调用COM:
需引入jacob.jar包。
示例代码:
public static void main(String[] args) {
ActiveXComponent com = new ActiveXComponent("J2NByDllClassLibrary.MyJ2N");
//namespace.class
Variant var = Dispatch.call(com, "GetEncrypt", "第一个参数", "第二个参数");
//COM,方法名,参数
String retVal = var.getString();
String[] array = retVal.split(",");
List<User> users = new java.util.ArrayList<User>();
for (int i = 0; i < array.length; i+=3) {
if(array[i].length() > 0){
User user = new User();
user.setUserId(Integer.parseInt(array[i]));
user.setUserName(array[i + 1]);
user.setPassword(array[i + 2]);
users.add(user);
}
}
System.out.println(users.size());
}
- Java连接.Net测试(二)
- Java连接.Net测试(一)
- Java连接.Net测试(三)
- RabbitMQ学习之Java客户端连接测试(二)
- RabbitMQ学习之Java客户端连接测试(二)
- ASP.NET 连接数据库测试(VS2010)
- ASP.NET 连接数据库测试(VS2010)
- 测试zookeeper服务报"java.net.ConnectException: 拒绝连接..错误
- ASP.NET连接SQL数据库(二)
- [VB.NET]连接数据库(二)
- [VB.NET]连接数据库(二)
- Java自动化测试(二)
- Java自动化测试(二)
- Java连接Oracle测试
- Java连接Oracle测试
- JAVA连接MYSQL测试
- Java连接MySQL数据库 (二)
- Java--JDBC连接数据库(二)
- 两个大数相加比较符合自然运算的算法
- 织梦/dedecms提示php.ini register_globals must is Off!的解决方法
- 经典博弈
- 15个优秀的第三方 Web 技术集成
- Java中的IO流
- Java连接.Net测试(二)
- webserver 不能已hashtable作为参数传递的解决办法
- 怎样才是真正的架构师
- NVL()函数
- 项目中 对XML的操作
- 第四章 管理事务和管理数据库 事务与锁
- pku1286置换群和POLYA定理
- 将.Net对象转换为Json字符串
- SQL命令 也许你会喜欢