bstr java,用Java开发组件

本文介绍了如何使用Java创建一个简单的COM组件,并通过Visual J++或MSSDK进行编译。接着,将编译后的类文件注册为COM对象,并展示了如何在ASP中像使用普通COM对象一样调用Java类的方法。此过程涉及到Java与COM的互操作性,包括数据类型的转换和对象的实例化。
摘要由CSDN通过智能技术生成

运行条件

microsoft java vm

java编辑器( vj++ 或microsoft java 编辑器)

asp安装并运行

介绍

ms java虚拟机自动地将一个java类的public方法当作一个com对象的一个方法。

必须要注意做一些必要的数据类型转换( 比如:将java string 转换成 bstrs )。

这使得你可以快速的建立一个基本的com组件并运行。

例子

public class javacom

{

public string szhello = "hello world" ;

public string anyfunc()

{

string n = "as returned by anyfunc !" ;

return n ;

}

}

用visual j++ 或者ms sdk ( jvc javacom.java )编译这个class文件。

将输出的.class文件拷贝至 /winnt/java/trustlib 目录。

下面,注册该类成一个com对象

javareg /register /class:javacom /progid:javacom.test

现在,我们可以像使用一个com对象一样使用一个java 类,使用如下语句:

set jc = server.createobject("javacom.test")

response.write jc.szhello & "
"

response.write jc.anyfunc & "
"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中调用COM组件方法,需要使用Java Native Interface(JNI)来实现。JNI是Java平台的一部分,它提供了一种机制,使Java应用程序能够调用本地(非Java)代码。 以下是一个简单的例子,演示如何在Java中调用COM组件方法: 1. 首先,你需要用Java Native Interface(JNI)创建一个本地库(dll文件)。 2. 创建一个Java类,使用native关键字声明一个本地方法,该方法将调用COM组件方法。 ```java public class ComComponent { static { // 加载本地库 System.loadLibrary("ComComponent"); } // 声明本地方法 public native void callComMethod(); } ``` 3. 实现本地方法,使用Java Native Interface(JNI)调用COM组件方法。 ```c #include <jni.h> #include <windows.h> #include "ComComponent.h" JNIEXPORT void JNICALL Java_ComComponent_callComMethod(JNIEnv *env, jobject obj) { // 创建COM对象 CLSID clsid; HRESULT hr = CLSIDFromProgID(L"ComComponentName", &clsid); if (FAILED(hr)) { return; } IDispatch* pDispatch; hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void**)&pDispatch); if (FAILED(hr)) { return; } // 调用COM组件方法 DISPID dispid; BSTR bstr = SysAllocString(L"ComMethodName"); hr = pDispatch->GetIDsOfNames(IID_NULL, &bstr, 1, LOCALE_USER_DEFAULT, &dispid); if (FAILED(hr)) { return; } VARIANTARG varg; DISPPARAMS dispparams = { &varg, NULL, 0, 0 }; EXCEPINFO excepinfo; UINT nArgErr = (UINT)-1; hr = pDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, NULL, &excepinfo, &nArgErr); if (FAILED(hr)) { return; } // 释放资源 pDispatch->Release(); SysFreeString(bstr); } ``` 4. 将C++代码编译为dll文件,然后将其添加到Java项目中。 5. 在Java代码中调用本地方法。 ```java public static void main(String[] args) { ComComponent com = new ComComponent(); com.callComMethod(); } ``` 在以上示例中,我们使用了COM组件的名称和方法名称。需要根据实际情况修改为你要调用的COM组件名称和方法名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值