`
liss
  • 浏览: 844330 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 如何调用com组件接口方法

阅读更多

大家都知道com组件的接口方法是基于windows下开发的。要在java里调的话。就要用到 JNI 技术。 JNI 是Java Native Interface的缩写,JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。尤其是c++或是c写的com组件接口。

JNI(Java Native Interface)的书写步骤 一般分为以下:

1、      编写带有native声明的方法的java类
2、    使用javac命令编译所编写的java类
3、     使用javah ?jni java类名生成扩展名为h的头文件
4、    使用C/C++实现本地方法
5、    将C/C++编写的文件生成动态连接库

写个例子来说明,最常用的还是hello world 的例子吧。

class HelloWorld {
public native void displayHelloWorld();

static {
System.loadLibrary("hello");
}

public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}

注意:LoadLibrary中的DLL文件名称可以随便定.只要做好的动态链接库改名成这个字符串就可以了

如果你想将一个方法声明为本地方法的话,必须将方法声明为native方法,并且不能实现。 做好该步准备以后,用javac TestNative.java生成.class.检验语法.   语法检查通过以后,用javah HelloWorld 生成.h的C头文件. 然后打开VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library .在向导中选择空工程. 把刚才javah生成的那个头文件加入工程 .然后 文件->;新建->;textFile 自己做一个.c文件.实现自己的native函数.例子如下:

1 #include
2 #include "HelloWorld.h"
3 #include

4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}

备注:
其中的HelloWorld.h通常在 jdk\include\ 可以先拷贝到VC安装目录下的include目录下。一劳永逸,以后可以方便使用JNI技术,全编译一下工程,如果没有出错,则此时生成动态链接库成成功。把动态链接库拷贝到HelloWorld .java所在的目录上.
运行java HelloWorld 看结果吧.

在实际应用中比较麻烦是数据类型的转换。因为要解决java和C++数据类型互通的问题。比如java里的string 如何映射为c++里相应的字符。还希望大家一起讨论。

分享到:
评论
1 楼 jackhao168 2010-11-08  
不错,很详细

相关推荐

    java调用com组件实例

    接口中的方法声明需要使用`@DeclDLL`注解,指定对应的COM方法。 3. **加载COM组件**:使用`ActiveXComponent`类加载COM组件。例如: ```java ActiveXComponent excel = new ActiveXComponent("Excel.Application")...

    jcom java调用com+组件

    Java调用COM+组件是一种常见的跨语言交互技术,它允许Java应用程序利用已有的COM(Component Object Model)或COM+组件,这些组件通常是用其他语言如C++或Visual Basic编写的。这种技术对于整合遗留系统或者利用...

    JAVA + JACOB调用c++COM组件

    4. **调用COM方法**:通过`ActiveXComponent`对象,你可以调用COM组件的任何方法。对于接受`VARIANT*`和`BSTR*`参数的方法,可以使用`Variant`类来封装数据。`Variant`类支持多种数据类型,包括字符串、整型、浮点型...

    java调用WPS或pdfcreator的com接口实现doc转pdf

    本篇将详细讲解如何利用Java调用WPS(金山办公软件)或PDFCreator的COM接口来实现doc到pdf的转换。我们将探讨以下知识点: 1. **什么是COM接口**: COM(Component Object Model)是微软提出的一种组件对象模型,...

    java通过url调用接口

    在Java编程中,通过URL调用接口是一种常见的网络通信方式,尤其在Web服务和API交互中扮演着重要角色。这个项目提供了一种方法,通过URL发送请求并接收响应,然后将响应的字符串转换为JSON格式进行处理。接下来,我们...

    java操作com组件

    它的主要功能是将Java方法映射到COM方法,反之亦然,使得Java能够调用COM组件的方法和属性,就像它们是原生的Java类一样。 要使用JACOB,首先需要在Java项目中引入JACOB的jar文件。然后,你需要创建一个`...

    java调用天气的接口

    Java 调用天气接口的知识点总结 Java 调用天气接口是指使用 Java 语言来调用天气预报服务的 WebService,获取当前天气信息和天气预报数据。下面是相关知识点的总结: 1. Java 调用 WebService Java 调用 ...

    java调用AutoCAD接口绘图工具类

    利用Jacob调用AutoCAD接口绘图,实现绘制图形,不是调用Windows绘制图形界面,是真正的调用AutoCAD绘图,只是给了测试代码,具体功能自己摸索

    自己的Java远程方法调用组件

    Java远程方法调用(Remote Method Invocation,简称RMI)组件是一种关键的技术,它允许Java应用程序在不同的网络节点之间透明地调用对象的方法,仿佛这些对象都在本地进程中一样。这种技术在构建分布式系统、大型...

    java调用大漠插件的开源项目,使用njawin插件调用com组件,目前还在研究java 如何免注册调用com组件.zip

    "java调用大漠插件的开源项目" 提到了如何利用Java来调用这类插件,而“njawin插件”则是一个关键工具,它提供了一个桥梁,使得Java代码能够与COM组件进行通信。 NJAWIN是Java调用Windows API和COM组件的开源库。这...

    Java调用C#com方法

    【Java调用C# COM方法】是指在Java应用程序中调用由C#编写的COM组件。由于Java本身不直接支持对.NET Framework中的COM组件进行调用,因此需要借助中间层来实现这一目标。通常有两种常见的方式:一是使用JNA(Java ...

    java调用word组件

    java2word 是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。

    Java RPC调用示例

    1. **定义服务接口**:RPC调用始于定义一个服务接口,该接口声明了可供远程调用的方法。这些接口是客户端和服务端共享的契约,确保双方有相同的调用约定。 2. **序列化与反序列化**:由于数据需要在网络间传输,...

    java调用C#封装的dll方法

    ### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...

    C#调用java程序的方法

    C#调用Java程序的方法 C#调用Java程序的方法是指将Java类转化成dotnet类,在C#项目直接调用。这种方法可以使得C#项目可以调用Java类的方法,从而实现C#和Java之间的交互。 在这个过程中,我们需要使用IKVM(ynamic...

    使用JACOB工具调用COM组件

    JACOB利用Java本地接口(JNI)技术实现了这一功能,从而为开发者提供了对遗留COM组件的访问能力,这对于系统集成特别有用。 要使用JACOB,首先你需要下载并安装它。JACOB的最新版本可在其官方网站上获取,例如在...

    Java调AutoCAD接口.zip

    Java调用AutoCAD接口是一项技术性很强的工作,它允许开发者使用Java编程语言来控制和操作AutoCAD应用程序,实现自动化绘图、数据交换等任务。在本压缩包中,"Java调AutoCAD接口.zip"提供了使用Jacob库进行这项工作的...

    C语言调用java语言方法

    JNI是Java平台提供的一种接口,它允许Java代码调用本地(native)代码,也就是非Java语言编写的代码,反之亦然。在Android开发中,JNI常用于实现高性能计算、硬件访问或利用C/C++库。 要实现C语言调用Java语言的...

    java调用ocx控件,jacob,jar和dll文件

    Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的组件对象模型(COM)控件。然而,通过第三方库如Jacob(Java和COM的桥梁),Java开发者能够在...

    java调用window操作系统文本转语音并生成播放文件

    总之,Java调用Windows操作系统实现文本转语音并生成播放文件,涉及到JNI、COM组件、DLL编程、音频处理等多个方面,需要对Java和Windows API有深入理解。通过适当的技术选择和优化,可以创建出高效、灵活的文本转...

Global site tag (gtag.js) - Google Analytics