java调DLL自己曾经也做过,当时是通过JNI调的,极其麻烦需要写C++的中间程序,这次又遇到了类似的问题,需要在java中调用vb.net写的com组件,dll的,而且dll封装的不是方法,而是类定义,需要在调用的时候自己实例化对象。一开始还打算走JNI的老路,但发现JNI只能直接调用DLL中的方法,无法进行对象实例化。后来无意间在sourceforge上看到jacob项目,一试之下果然不凡,不用碰C、C++,直接调用,废话少说,步骤如下:
从sourceforge上下到jacob的压缩包,其中有两个关键文件,一个是jacob-[版本号].jar,另一个是jacob-[版本号]-[x86/x64].dll,其中x86对应32位操作系统,x64对应64位的,把这个dll放到windows/system32下,jacob.jar导入项目的classpath,把dll用.net framework注册,以我的机器上.net framework安装位置为例,注册命令为:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\regsvcs.exe [需要调用的dll文件路径]
注册后就可以在java程序中调了,
ActiveXComponent axc = new ActiveXComponent("ZDSJMSF.SC.ZDSJMSF.SuanFa"); //构造函数参数为Class全名
Dispatch mycom = (Dispatch) axc.getObject(); //相当于对象实例化
Dispatch.put(mycom, "propBuySum","5424"); //为对象的属性赋值
Dispatch.callN(mycom, "Init", new Object[] {});//调用无参数方法Init为方法名
Dispatch.callN(mycom, "GetBuyCode", new Object[] {15,"9"}); //调用带参方法
String propBuyCode = Dispatch.get(mycom, "propBuyCode").getString();//获取对象属性
分享到:
相关推荐
Java调用COM组件是Java与非Java环境交互的一种方式,主要应用于Windows平台,因为COM(Component Object Model)是微软提出的一种面向对象的技术,主要用于构建Windows应用程序和服务。在Java中调用COM组件,可以...
java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)
Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
`jacob.dll`是JACOB的动态链接库,负责实现Java和COM之间的通信,而`jacob.jar`则包含Java类库,提供了Java调用COM的API。 要在Java项目中使用JACOB,你需要进行以下步骤: 1. **添加依赖**:首先,将`jacob.jar`...
### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...
Java 调用 C# 封装的 DLL 方法概述 Java 调用 C# 封装的 DLL 方法是软件开发中的一种常见需求,本文将对这种方法进行归纳和总结。Java 调用 C# 封装的 DLL 方法有两种方式,一种是使用 JNA(Java Native Access)...
Java调用DLL和OCX是将Java语言与Windows平台下的动态链接库(DLL)和控件(OCX)集成的一种技术。DLL是Windows系统中的一种共享库,它包含可由多个程序同时使用的代码和数据。而OCX是ActiveX控件,主要用于Windows...
总结一下,Java调用OCX控件、DLL和处理Word文档涉及的关键技术有:Java Native Interface(JNI)用于与本地代码交互,Apache POI库则提供了处理Word文档的强大工具。在实际开发中,理解这些技术的原理和应用,能够...
Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的组件对象模型(COM)控件。然而,通过第三方库如Jacob(Java和COM的桥梁),Java开发者能够在...
### Java调用DLL:JNative概述 在Java项目中,有时候需要调用本地系统的动态链接库(DLL)来实现特定的功能。传统的做法是通过Java Native Interface (JNI)来进行调用,但这往往涉及到复杂的配置和繁琐的过程。为了...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
Java调用DLL文件是软件开发中的常见需求,尤其是在Java与C/C++混合编程时。`JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO...
标题提到的“操作com组件的可以java直接调用vb的dll”,实际上是在阐述如何通过Java来利用VB编写的动态链接库(DLL)来操作COM组件,从而实现对Office应用如Word和Excel的控制。这里主要涉及的知识点包括Java COM互...
在软件开发过程中,有时需要将不同编程语言...在上述示例中,两种方法都展示了如何从Java调用Delphi DLL,实现特定的功能,例如输出文本到控制台。在实际开发中,可以根据项目的具体需求和团队技术栈来选择合适的方法。
在IT行业中,跨语言通信是常见的需求,...总的来说,Java调用C# DLL涉及了跨平台通信、语言间互操作、库调用等多个复杂知识点。通过学习和实践,你可以掌握这些技术,增强你的编程能力,应对更多复杂系统的设计和开发。
SatJni是C++编写的动态链接库,实现了C#,PB,Delphi,VB,VC等对Java的调用,能让你很容易地调用成熟的java类库和第三方java组件。不用再为移值java代码而烦恼。 示例中演示了PB调用webservice服务(无需代理对象)得到...
本话题聚焦于“Java调用C# DLL”,这是一个涉及到Java与.NET Framework交互的技术问题。C#编译的DLL(动态链接库)是.NET环境下的组件,而Java作为跨平台的语言,如何与之交互是一个重要的知识点。 首先,为了实现...
以上是几种常见的Java调用C# DLL的实现方案,具体选择哪种方法取决于项目的具体需求,如性能、兼容性、复杂性和开发成本等因素。在实际应用中,可能需要综合考虑多种因素,选择最合适的方案。提供的"Java调用C#的DLL...
【使用JACOB工具调用COM组件】是一个关键的话题,特别是在Java编程中处理与Windows平台交互的场景。JACOB,全称为JAVA-COM Bridge,它允许Java应用程序直接调用COM(Component Object Model)组件,这些组件通常是用...