`

JAVA 使用 JACOB包 调用.NET DLL(测试连接成功)

    博客分类:
  • Java
阅读更多
1,大概步骤
1) 准备好 DLL文件(32位和64位系统下编译的 有差别, 不能通用)。
2) 装好jdk和eclipse.
3) 下载jacob最新的包(目前是1.7)
4) 将jacob.jar导入到eclipse项目路径, 将jacob-1.17-M2-x64.dll(或者是jacob-1.17-M2-x32.dll)添加到环境变量path.
5) 可以开始.


2. 小例子
1).NET代码
创建InvokeCSharp项目,在InvokeCSharp.cs文件中加如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace InvokeCSharp
{

    [Guid("C41D14FD-F719-41fc-94CD-4B64D19F44B0")]
    public interface IExampleClass
    {
                [DispId(1)]
        string HelloJava(string name);
    }
    [Guid("70FE7452-0D4B-4717-8352-FEB0F6E830C1"),
    ClassInterface(ClassInterfaceType.None)]
    public class ExampleClass : IExampleClass
    {
        public ExampleClass() { }

        public string HelloJava(string name)
        {
            return "Java传递过来的参数为: " + name;
        }
    }
}
2)需要注意的是编译前的配置步骤,主要有以下几步:
1、解决方案资源管理器中右键点击项目名称“InvokeCSharp”,选择属性
2、在“应用程序”页签中,点击“程序集信息”按钮,在弹出的对话框中勾上最后一
  个复选框“使程序集COM可见”
3、在“生成”页签中,勾上最后一个复选框“为COM互操作注册”
4、生成“InvokeCSharp”项目
5、在项目的Debug\bin文件夹下会有这样几个文件:一个是InvokeCSharp.dll,另
  一个是InvokeCSharp.tlb,这个就是我们要的COM程序
6、最后,注册COM,打开“Visual Studio 命令提示”,进入InvokeCSharp项目
  的Debug\bin文件夹,运行“regasmInvokeCSharp.dll /tlb:InvokeCSharp.tlb”,这样就注册了COM,regasm为.NET Framework 工具中的程序集注册工具。注册成功后,每次C#程序有修改,都不再需要重新注册了

3)java 代码
  import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.sun.xml.internal.ws.resources.DispatchMessages;

public class JavaInvokeCSharpClass {

private final String DLL_NAME = "DLLforVB.ComDLLforVB";

private ActiveXComponent dotnetCom = null;
private Dispatch dispatch = null;
private Variant var = null;

public JavaInvokeCSharpClass() {
dotnetCom = new ActiveXComponent(DLL_NAME);
dispatch = dotnetCom.getObject();
}

public static void main(String[] args) {
try {
JavaInvokeCSharpClass test = new JavaInvokeCSharpClass();
            test.var = test.dispatch.call(test.dotnetCom, "ToolGetLocalIP");
String str = test.var.toString();
System.out.println(str);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}


分享到:
评论

相关推荐

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

    接下来,为了能够在Java应用中使用Jacob,你需要确保系统路径中包含了`jacob.dll`。这个动态链接库文件实现了Java层与COM层的桥接,使得Java能够调用COM组件。通常,`jacob.dll`需要放在Java的系统库目录下,或者在...

    操作com组件的可以java直接调用vb的dll

    当Java通过Jacob调用这些DLL时,实际上是调用了VB中的特定函数,实现特定的功能,例如读写Excel文件或操作Word文档。 4. 操作Excel和Word:在Windows环境中,Microsoft Office提供了丰富的COM接口供其他程序调用,...

    java调用C#封装的dll方法

    其中一种方案是使用Java Native Access (JNA) 来调用通过C++封装的C# DLL文件。 **步骤详解:** **1. 创建C# COM组件:** - **新建项目:** 在Visual Studio中创建一个新的类库项目,并命名为`COMTest`。 - **...

    java调用c#样例

    标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...

    java语言使用.net的方法

    以下是一个简单的示例,演示如何使用JACOB调用.NET DLL中的一个方法: ```java import com.jacob.com.*; public class JavaCallDotNet { public static void main(String[] args) { ComThread.initMTA(true);...

    jacob jar包和dll文件(64位和32位都有)

    标题中的“jacob jar包”指的是Jacob库的Java版本,它包含了Java类库,使得开发者可以在Java代码中调用Jacob的功能。而“dll文件”则是Jacob运行时所需的动态链接库,是Windows系统下的本地库文件,用于支持Jacob在...

    jacob-1.14.3-x64_x86.zip

    至于压缩包内的文件"jacob-1.14.3-x64_x86",很可能包含了Jacob库的JAR文件(供Java程序使用)、对应的JNI库(如dll文件)以及可能的文档和示例代码。使用这些文件时,开发者需要将JAR添加到Java项目的类路径中,并...

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

    以下是使用 Jacob 调用 C# DLL 的基本步骤: 1. **引入 Jacob 库**:首先,你需要将 Jacob 相关的 JAR 包(如 jacob.jar)添加到 Java 项目的类路径中。这个 JAR 包包含了 Java 对 COM 进行操作所需的所有 native ...

    JAVA-dll-ocx.rar_Java调用dll_dll ocx_java EdisonSmsGw.ocx_java 调用o

    在"javacom"这个压缩包的子文件中,可能包含了使用JNI或JNA进行DLL调用,以及使用JACOB等工具调用OCX控件的Java源码示例。通过分析这些示例,开发者可以学习如何在实际项目中实现类似的集成。 总结起来,这个压缩包...

    JAVA调用C#的DLL文件

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

    jacob.dll32位64位

    - Jacob是基于JNI(Java Native Interface)的,所以会受到Java版本的限制,确保使用的jacob.dll与Java版本匹配。 - 在开发和部署过程中,确保目标机器上安装了与dll文件相匹配的.NET Framework,因为Jacob依赖于...

    jacob.dll+jacob.jar

    5. 性能考虑:虽然Jacob提供了一种便利的方式来调用COM组件,但因为涉及到JNI调用,性能可能不如直接使用.NET或其他原生语言。在性能敏感的应用中,这可能是一个需要考虑的因素。 在实际项目中,`必读.txt`文件可能...

    jacob-1.18-M2(含Jacob.jar包以及Jacob.dll文件 说明文档API等)

    总的来说,"jacob-1.18-M2"是一个完整的Jacob使用包,包含所有必要的组件和文档,使得Java开发者能够方便地在Java程序中集成和使用Windows的COM组件,如进行文字转音频这样的任务。在Windows平台上进行Java开发时,...

    jacob-1.14.3 jar和dllx86x64

    Jacob提供了一个接口,让开发者能够在Java中使用那些通常只能在.NET或Visual Basic环境中使用的COM对象。这个库特别适用于需要与Microsoft Office套件集成或者操作其他Windows特定功能的Java应用。 标题"jacob-...

    Java调用C#的DLL实现方案.rar

    它们处理了底层的互操作性问题,使Java可以直接调用.NET DLL,包括C#的。 6. **C++/CLI中间层** C++/CLI是微软为.NET平台设计的一种C++方言,它允许直接访问.NET Framework的托管代码。可以编写一个C++/CLI项目,...

    jacob1.18最新包及源码下载

    这个"jacob1.18最新包及源码下载"资源提供的是Jacob项目的最新版本1.18,对于那些在Java应用中需要调用Windows COM接口的开发者来说,这是一个非常有价值的工具。 Jacob库的核心功能是为Java应用程序提供了一个桥梁...

    Java调用C#com方法

    ### 第二种方法:Java利用Jacob调用C# DLL 1. **配置Jacob**: - 下载Jacob库(`jacob-x.x.x.dll`和`jacob.jar`),将`jacob.jar`添加到Java项目的类路径中,`jacob-x.x.x.dll`放置在系统路径下或Java库路径中。 ...

    Java-COM中间件 JACOB

    这个中间件是为了解决Java语言与COM(Component Object Model)之间的互操作性问题而设计的,使得开发者能够在纯Java环境中调用和利用COM对象的功能,无需编写C++或.NET代码。 JACOB的核心在于它的JNI(Java Native...

    jacob-1.14.3-x64及maven.zip

    综上所述,这个压缩包提供了使用Java和Jacob库将Word文档转换为PDF的解决方案,结合Maven进行项目管理,并附带了DLL处理工具和相关资料。开发者需要了解Java、Jacob、Maven以及COM组件的基本概念,以便成功地在项目...

    jacob-dll文件

    接着,在Java代码中,需要通过`System.loadLibrary`方法加载DLL,然后就可以使用Jacob提供的Java接口来调用COM组件了。 ```java import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; ...

Global site tag (gtag.js) - Google Analytics