`

Java 调com 组件(dll文件)

阅读更多

1. java 核心 jni 原理绍

前一段时间有同事长问我说java 设用dll 库很不方便可他不会c/c++ 

因为java 1.0 版本后有一个接口名为jni

他的原理就是

.java---编译--->.class---javah-->.h-----引用---.c/.cc/.cpp---->.dll

最后

.java中有一条 System.loadLibrary("DllName");

在通过public native static getUserInfo(String username,String sid);

来调c 实现的方法

这样对c/c++ 有一定功底的人来说是没有多大问题的。

但是要想调dll 、com 组件 没有必要做这一些事情

早在1999年开源组织就以经出现了像jacob 这一类开源项目,当然做的比较成

功有很多,例如jacob、jacom、jawin、jnative等

在这时给大家介绍一个最成熟的项目jacob 早在1999年就成立了这个开源项目

经过了十几年的测试应用。所以要相信开源相信java 的魅力。

 

 

2. 下载jacob 开源包

 在jdk/bin 目录下加入jacob.dll 文件

3.下载 1.15 版本

Regsvr32 filename.dll 注册该文件 如果没有成功说明 对应com 组件依敕的dll 文件没有(同c/c++) 一样对应的

依赖包将这些方入jdk /bin目录下

这一步一定要注册成功,不然后面的就没有办法了

你想如果注册没有成功c 都调不到java 肯定也调不到你说对吧

 

4. 写代码就很容易了不是

 当然接口中加入jacob.jar 包

package com.test;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

/**
 * 
 * 2008-10-5
 * @author liuqing
 *
 */
public class JaCobTest {

	 int EXCEL_HTML = 44;   

	/**
	 * @param args
	 */
	public static void main(String[] args) {
                                 //注册com组件
		ActiveXComponent app = new ActiveXComponent("PB80.n_fl_tj_xs_interface");
		try {
			Dispatch disp = app.getObject();
			Object []ob = new Object[]{"argOne","argTwo"};
			Variant v = Dispatch.callN(disp, "of_qx_tjdj", ob);
			int a = v.getInt();
			System.out.println("com 接口说:" + a);
		}
		catch (Exception e) {
			
		}
	}
	/**
	 * Excel 测试
	 * @param xlsfile
	 * @param htmlfile
	 */
	public void excelToHtml(String xlsfile, String htmlfile)   
	  {   
	       ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel   
	      try{   
	           app.setProperty("Visible", new Variant(true));   
	         Dispatch excels = app.getProperty("Workbooks").toDispatch();   
	          Dispatch excel = Dispatch.invoke(excels,"Open",Dispatch.Method,new Object[] { xlsfile, new Variant(false),new Variant(true) }, new int[1]).toDispatch();   
	          Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {htmlfile, new Variant(EXCEL_HTML) }, new int[1]);   
	          Variant f = new Variant(false);   
	          Dispatch.call(excel, "Close", f);   
	       }   
	       catch (Exception e) {   
	         e.printStackTrace();   
	       }   
	       finally {   
	            app.invoke("Quit", new Variant[] {});   
	       }   
	   }   

	

}

 

 

  运行OK

 

 

 

分享到:
评论

相关推荐

    java操纵com组件–java调用C#写的DLL文件

    Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...

    java调用com组件实例

    JACOB的核心是通过动态链接库(DLL)与COM组件交互,从而简化了Java与COM之间的通信。 **二、JACOB的使用步骤** 1. **引入JACOB库**:首先需要将JACOB的jar文件(如jacob-1.19.4.jar)添加到项目的类路径中。 2. **...

    JAVA调用C#的DLL文件

    ### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...

    Java调用dll文件开源组件jar包及说明文档

    Java调用DLL文件是软件开发中的常见需求,尤其是在Java与C/C++混合编程时。`JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO...

    java调用C#封装的dll方法

    为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java平台之间的互操作性问题。其中一种方案是使用Java Native Access (JNA) 来调用通过C++...

    java调用C#封装的dll(jna,com)

    java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)

    OpenCV-java jar包和dll文件.zip

    这个压缩包"OpenCV-java jar包和dll文件.zip"应该包含了这些必要组件。 2. **导入jar包**:将OpenCV的jar包添加到项目的类路径中。这可以通过IDE的设置(如Eclipse或IntelliJ IDEA)或在构建脚本(如Maven或Gradle...

    Java 調用Delphi 的DLL文件的实例

    6. **编译C/C++源代码为DLL**:使用C/C++编译器(如GCC或Visual C++)编译源代码,生成一个新的DLL文件,这个文件将包含Java本地方法的实现。 7. **测试与运行**:现在,Java代码已经可以调用Delphi DLL中的函数了...

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

    Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的...在实际操作时,需要仔细处理好jar和dll文件的配置,确保Java能够正确地调用和使用COM组件。

    javaRD800.dll 32位操作系统文件下载

    JavaRD800.dll是Java运行时环境(JRE)的一部分,主要在32位操作系统上使用...在解决这类问题时,应采取系统性的方法,包括检查系统兼容性、确保软件完整安装、从可信源获取和注册dll文件,以及在必要时寻求专业帮助。

    opencv4.5.1-java-jar dll.zip

    这些dll文件是OpenCV在Java中运行所必需的本地库,它们实现了OpenCV的底层功能。 5. **JNI(Java Native Interface)**:JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。在OpenCV的Java应用中...

    JAVA调用COM组件

    对于本地开发,确保`jacob.dll`位于系统PATH环境变量指定的目录下,或将其与你的可执行文件放在同一目录下,因为Java运行时需要这个库来加载COM组件。 2. **导入必要的包**:在Java源代码中,导入`com.jacob.com`包...

    VTK8.0.1+Java环境编译文件Jar包和DLL文件集合

    将这些DLL文件放在系统的`PATH`环境变量所包含的目录下,或者与Java应用程序的可执行文件放在一起,可以确保Java虚拟机在运行时能够找到并加载它们。 为了在Java项目中使用VTK,你需要在项目的类路径(classpath)...

    jar文件 变成dll

    标题中的“jar文件变成dll”指的是将Java编写的类库转换为.NET平台可使用的动态链接库(DLL)文件。在.NET框架中,DLL是共享代码的主要形式,可以在多个应用程序之间重用。Java的jar文件则包含了编译后的字节码,...

    jacob-1.18的jar包以及.dll文件

    Jacob通过加载.dll文件来实现Java对COM对象的调用,因此它在Windows环境下运行,支持x64和x86两种架构。 1. **Java COM Bridge(Jacob)**:Jacob是Java开发者在Windows系统中与COM组件通信的一个重要工具。它提供...

    java通过 jawin和jacob 调用dll文件

    JCOB(Java COM Bridge)也是一个用于Java与COM组件交互的库,它可以用来访问和控制COM对象,包括那些由DLL文件提供的COM服务。JCOB通过反射和JNI技术,为Java提供了与COM对象交互的能力。这意味着,即使没有原始的...

    hadoop的dll文件 hadoop.zip

    Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop可能需要特定的DLL文件来支持其运行。 DLL文件的作用在于提供了一种方式,使得多个应用程序可以共享同一段代码和数据,从而减少内存占用和磁盘空间。在...

    msjava.dll

    然而,随着Java技术的发展和微软对Java支持的改变,此DLL文件可能不再被最新版本的软件或系统需要。 **找不到msjava.dll的常见问题** 1. **丢失或损坏**: 当系统或应用程序尝试访问msjava.dll而找不到时,可能会...

    Windows DLL或COM库通信插件jacob 1.21

    程序与Microsoft Windows DLL...在Windows平台上,COM组件通常是通过将DLL文件注册到系统注册表中来实现调用的。而在Linux平台上,需要手动将COM组件的相关信息写入Wine的注册表中,以便Java程序能够找到并调用该组件。

    java调用office使用的dll文件

    标题中的"java调用office使用的dll文件"指的是Jacob库的核心部分——动态链接库(DLL)文件。DLL文件是Windows操作系统中的一种共享库,包含可由多个程序同时使用的代码和数据。在Jacob中,有针对不同操作系统位数的...

Global site tag (gtag.js) - Google Analytics