自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

巧用C#做中間語言 實(shí)現(xiàn)Java調(diào)用.net DLL的方法

開發(fā) 后端
本文為大家講一個(gè)用C#做一個(gè)Com,調(diào)用.net DLL實(shí)現(xiàn)加密解密的方法,然后提供給java使用,達(dá)到利用java調(diào)用.net DLL的功能。

51CTO曾經(jīng)為大家講過“Java與.NET的WebServices相互調(diào)用”,但是如何實(shí)現(xiàn)Java調(diào)用.net DLL的方法呢?我們?cè)诰W(wǎng)上搜索了一番,也沒找到啥東西,甚至看到人揚(yáng)言此事絕無可能。本文將詳細(xì)為大家介紹一個(gè)java調(diào)用.net DLL的方法,以實(shí)現(xiàn)特殊的客戶的特殊要求:“在Java項(xiàng)目中必須使用其提供的用.net寫的DLL加密機(jī)制!”

環(huán)境與工具:

◆.net framework 3.5  C#

◆java jdk1.5,   Tomcat 5.5

◆jacob-1.15-M3

實(shí)現(xiàn)例子:

一、C# 制作Com組件

新建一個(gè)Class 項(xiàng)目,取名TestCom

代碼

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Runtime.InteropServices;  
  6.  
  7. namespace TestCom  
  8. {  
  9.     [Guid("E9BCF867-CD81-40d0-9591-ED28D1ED2B53")]  
  10.     public interface IEncrypt  
  11.     {  
  12.         [DispId(1)]  
  13.          string GetEncrypt(string str,string str2);  
  14.     }  
  15.     [Guid("33A6E58D-E1F5-4b53-B2E2-03B9F8BA2FAD"), ClassInterface(ClassInterfaceType.None)]  
  16.     public class Encrypt:IEncrypt  
  17.     {  
  18.         public Encrypt(){}  
  19.  
  20.         public string GetEncrypt(string str,string str2)  
  21.         {  
  22.              
  23.              return  "測(cè)試 | "+str+"|"+str2;  
  24.         }  
  25.     }  

打開 Project-->  Properties菜單  在Application標(biāo)簽中打開 Assembly Information 將Make assembly Com-Visible一項(xiàng)選中。再切換到Build標(biāo)簽將 Register for COM interop一項(xiàng)選中。

Guid的生成:打開Visual Studio Command Prompt 輸入guidgen 命令調(diào)出工具。類型選擇Registry Format,點(diǎn)擊New Guid,然后COPY出來。

[DispId(1)]為函數(shù)的標(biāo)識(shí)。如果有多個(gè)函數(shù)可相應(yīng)的在函數(shù)前面加[DispId(2)], [DispId(3)]…

編譯程序Debug目錄中會(huì)生成 TestCom.dll 和TestCom.tlb

手工注冊(cè)Com方法:

打開Visual Studio Command Prompt進(jìn)入Debug目錄,運(yùn)行命令注冊(cè):regasm TestCom.DLL /tlb:TestCom.tlb

二、Java調(diào)用Com

部署jacob

◆在開發(fā)環(huán)境中引入jacob.jar

◆拷貝jacob-1.15-M3-x86.dll 文件到 C:\Windows\System32目錄,如果是Web應(yīng)用的話還需要拷貝到j(luò)dk1.5.0_16\bin目錄(jdk安裝目錄下的bin目錄)

java調(diào)用代碼

代碼

  1. import com.jacob.activeX.ActiveXComponent;  
  2. import com.jacob.com.ComThread;  
  3. import com.jacob.com.Dispatch;  
  4. import com.jacob.com.Variant;  
  5. public class test {  
  6.  
  7.     /**  
  8.      * @param args  
  9.      */  
  10.     public static void main(String[] args) {  
  11.         // TODO Auto-generated method stub  
  12.         try{  
  13.             ActiveXComponent dotnetCom = null;  
  14.             dotnetCom = new ActiveXComponent("TestCom.Encrypt");  
  15.             Variant var = Dispatch.call(dotnetCom,"GetEncrypt","哥是***個(gè)參數(shù)","哥是第二個(gè)參數(shù)");  
  16.             String str  = var.toString(); //返回值  
  17.             } catch (Exception ex) {  
  18.                 ex.printStackTrace();  
  19.             }  
  20.     }  
  21.  

這便完成了Java調(diào)用.net DLL的方法!

 

原文地址:http://www.cnblogs.com/windsor/archive/2010/06/17/1759289.html

 

【編輯推薦】

  1. Java與.NET的WebServices相互調(diào)用
  2. 平臺(tái)之爭(zhēng) Java與.NET誰更有前途
  3. Java與.NET 誰能主宰未來?
  4. Sun提高Java與.Net兼容性
責(zé)任編輯:佚名 來源: 汪翔blog
相關(guān)推薦

2009-08-14 16:25:36

C#中間語言和元數(shù)據(jù)

2009-08-03 12:57:27

C#調(diào)用DLL

2009-07-31 17:28:35

C#語言調(diào)用DLL

2009-08-05 09:30:39

C#調(diào)用DLL函數(shù)

2009-08-05 09:40:02

C#調(diào)用DLL函數(shù)

2011-04-08 09:52:44

C++C#DLL

2010-01-15 16:12:40

VB.NET調(diào)用DLL

2009-08-07 17:22:36

C#調(diào)用dll導(dǎo)出函數(shù)

2009-08-05 17:06:39

ASP調(diào)用C# DLL

2024-05-16 12:33:37

C#編程指針

2009-08-05 16:41:36

C#調(diào)用VC dll

2009-09-02 17:16:01

冒泡排序

2009-07-27 14:13:56

調(diào)用c#方法Java scriptASP.NET

2009-08-05 15:04:14

C# dll注入

2009-08-05 16:49:42

C#中調(diào)用dll

2009-08-05 09:22:43

C#調(diào)用VC DLL

2009-08-05 09:09:14

C#調(diào)用VC DLL接

2010-08-23 14:51:37

保護(hù).net反編譯

2009-08-31 18:05:14

C#調(diào)用WalkTre

2009-08-31 16:33:28

C#調(diào)用Dispose
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)