环境与工具: ◆.net framework 3.5 C# ◆java jdk1.5, Tomcat 5.5 ◆jacob-1.15-M3 实现例子: 一、C# 制作Com组件 新建一个Class 项目,取名TestCom 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace TestCom { [Guid("E9BCF867-CD81-40d0-9591-ED28D1ED2B53")] public interface IEncrypt { [DispId(1)] string GetEncrypt(string str,string str2); } [Guid("33A6E58D-E1F5-4b53-B2E2-03B9F8BA2FAD"), ClassInterface(ClassInterfaceType.None)] public class Encrypt:IEncrypt { public Encrypt(){} public string GetEncrypt(string str,string str2) { return "测试 | "+str+"|"+str2; } } } 打开 Project--> Properties菜单 在Application标签中打开 Assembly Information 将Make assembly Com-Visible一项选中。再切换到Build标签将 Register for COM interop一项选中。 Guid的生成:打开Visual Studio Command Prompt 输入guidgen 命令调出工具。类型选择Registry Format,点击New Guid,然后COPY出来。 [DispId(1)]为函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]… 编译程序Debug目录中会生成 TestCom.dll 和TestCom.tlb 手工注册Com方法: 打开Visual Studio Command Prompt进入Debug目录,运行命令注册:regasm TestCom.DLL /tlb:TestCom.tlb 二、Java调用Com 部署jacob ◆在开发环境中引入jacob.jar ◆拷贝jacob-1.15-M3-x86.dll 文件到 C:/Windows/System32目录,如果是Web应用的话还需要拷贝到jdk1.5.0_16/bin目录(jdk安装目录下的bin目录) java调用代码 代码 import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try{ ActiveXComponent dotnetCom = null; dotnetCom = new ActiveXComponent("TestCom.Encrypt"); Variant var = Dispatch.call(dotnetCom,"GetEncrypt","哥是第一个参数","哥是第二个参数"); String str = var.toString(); //返回值 } catch (Exception ex) { ex.printStackTrace(); } } } 这便完成了Java调用.net DLL的方法!
您还没有登录,请您登录后再发表评论
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
使用IKVM.NET,你可以将Java的.jar文件转换为.NET的DLL,然后在C#中直接引用和调用。这种方法避免了生成.NET组件的步骤,但可能需要处理类型映射和兼容性问题。 3. **Remoting/Thrift/RPC**: 通过网络通信协议,...
在Java中调用C# DLL,我们需要借助一些中间层技术,因为Java原生并不支持直接调用.NET DLL。以下是一种常用的方法: 1. **JNI(Java Native Interface)**:Java提供的原生接口,允许Java代码调用本地(如C、C++)...
标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...
5. **C#调用Java代码**: 在C#项目中,你可以像调用任何其他.NET库一样调用转换后的dll文件中的方法。不过,由于是跨平台调用,需要注意一些类型映射和异常处理的问题。 6. **测试与调试**: 完成上述步骤后,务必...
本话题聚焦于“Java调用C# DLL”,这是一个涉及到Java与.NET Framework交互的技术问题。C#编译的DLL(动态链接库)是.NET环境下的组件,而Java作为跨平台的语言,如何与之交互是一个重要的知识点。 首先,为了实现...
Java调用C# DLL的方法简介 在跨平台的软件开发中,有时我们需要在Java应用程序中调用由C#编写的动态链接库(DLL)。这通常涉及到两种主要的技术:JNI(Java Native Interface)和第三方工具。这篇知识文章将详细介绍...
标题"JAVA调用C++/C#的DLL"涉及到的技术点主要集中在Java Native Interface(JNI)上,这是一种允许Java代码与其他编程语言(如C++或C#)进行交互的标准机制。下面我们将深入探讨这一主题。 首先,JNI是Java平台的...
例如,在企业级应用中,可以使用C#调用Java类的方法来实现业务逻辑。在桌面应用中,可以使用C#调用Java类的方法来实现图形用户界面。在移动应用中,可以使用C#调用Java类的方法来实现游戏逻辑等。 C#调用Java程序的...
- 类似于方法1中的示例,可以在C#中通过实例化Java类并调用其方法来实现跨语言的调用功能。 #### 总结 通过上述两种方法,我们能够有效地在C#环境中使用Java开发的类库。这种方式不仅扩展了.NET平台的功能,还...
### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...
“UseJAVA.rar”和“JAVADemo.rar”可能是包含示例代码的压缩包,它们可能演示了如何使用IKVM.NET在C#中调用Java方法的具体步骤。解压这两个文件,打开C#项目,查看其中的代码以了解实际操作。通常,你会看到如何...
总结,通过IKVM.NET,C#可以方便地调用Java类和使用Java的jar包,实现跨语言的互操作。这对于整合现有Java库或利用特定Java功能的C#项目来说是非常有用的。然而,这种方式并不总是最佳解决方案,尤其是在性能敏感的...
在IT行业中,跨语言通信是一项常见的任务,尤其是在大型系统中,不同组件可能由不同语言编写。...提供的"Java调用C#的DLL实现方案.docx"文档应该会详细解释这些方法的步骤和示例代码,建议仔细阅读。
本主题聚焦于如何使用Java调用由C#编写的DLL(动态链接库)文件。这种技术通常应用于系统集成、利用已有的C#组件或者服务,以及实现多语言环境下的协作开发。下面将详细阐述这个过程。 首先,C#编写的DLL是.NET框架...
本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...
Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...
然后,通过`CreateJavaProxy`或`CreateNetProxy`方法,你可以分别在Java中调用.NET对象或在.NET中调用Java对象。这种双向调用的能力使得jni4net成为跨平台集成的重要工具。 在C#中调用Java代码时,你需要定义一个...
相关推荐
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
使用IKVM.NET,你可以将Java的.jar文件转换为.NET的DLL,然后在C#中直接引用和调用。这种方法避免了生成.NET组件的步骤,但可能需要处理类型映射和兼容性问题。 3. **Remoting/Thrift/RPC**: 通过网络通信协议,...
在Java中调用C# DLL,我们需要借助一些中间层技术,因为Java原生并不支持直接调用.NET DLL。以下是一种常用的方法: 1. **JNI(Java Native Interface)**:Java提供的原生接口,允许Java代码调用本地(如C、C++)...
标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...
5. **C#调用Java代码**: 在C#项目中,你可以像调用任何其他.NET库一样调用转换后的dll文件中的方法。不过,由于是跨平台调用,需要注意一些类型映射和异常处理的问题。 6. **测试与调试**: 完成上述步骤后,务必...
本话题聚焦于“Java调用C# DLL”,这是一个涉及到Java与.NET Framework交互的技术问题。C#编译的DLL(动态链接库)是.NET环境下的组件,而Java作为跨平台的语言,如何与之交互是一个重要的知识点。 首先,为了实现...
Java调用C# DLL的方法简介 在跨平台的软件开发中,有时我们需要在Java应用程序中调用由C#编写的动态链接库(DLL)。这通常涉及到两种主要的技术:JNI(Java Native Interface)和第三方工具。这篇知识文章将详细介绍...
标题"JAVA调用C++/C#的DLL"涉及到的技术点主要集中在Java Native Interface(JNI)上,这是一种允许Java代码与其他编程语言(如C++或C#)进行交互的标准机制。下面我们将深入探讨这一主题。 首先,JNI是Java平台的...
例如,在企业级应用中,可以使用C#调用Java类的方法来实现业务逻辑。在桌面应用中,可以使用C#调用Java类的方法来实现图形用户界面。在移动应用中,可以使用C#调用Java类的方法来实现游戏逻辑等。 C#调用Java程序的...
- 类似于方法1中的示例,可以在C#中通过实例化Java类并调用其方法来实现跨语言的调用功能。 #### 总结 通过上述两种方法,我们能够有效地在C#环境中使用Java开发的类库。这种方式不仅扩展了.NET平台的功能,还...
### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...
“UseJAVA.rar”和“JAVADemo.rar”可能是包含示例代码的压缩包,它们可能演示了如何使用IKVM.NET在C#中调用Java方法的具体步骤。解压这两个文件,打开C#项目,查看其中的代码以了解实际操作。通常,你会看到如何...
总结,通过IKVM.NET,C#可以方便地调用Java类和使用Java的jar包,实现跨语言的互操作。这对于整合现有Java库或利用特定Java功能的C#项目来说是非常有用的。然而,这种方式并不总是最佳解决方案,尤其是在性能敏感的...
在IT行业中,跨语言通信是一项常见的任务,尤其是在大型系统中,不同组件可能由不同语言编写。...提供的"Java调用C#的DLL实现方案.docx"文档应该会详细解释这些方法的步骤和示例代码,建议仔细阅读。
本主题聚焦于如何使用Java调用由C#编写的DLL(动态链接库)文件。这种技术通常应用于系统集成、利用已有的C#组件或者服务,以及实现多语言环境下的协作开发。下面将详细阐述这个过程。 首先,C#编写的DLL是.NET框架...
本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...
Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...
然后,通过`CreateJavaProxy`或`CreateNetProxy`方法,你可以分别在Java中调用.NET对象或在.NET中调用Java对象。这种双向调用的能力使得jni4net成为跨平台集成的重要工具。 在C#中调用Java代码时,你需要定义一个...