国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

.Net調(diào)用Java的實(shí)現(xiàn)方法

2019-11-14 21:03:46
字體:
供稿:網(wǎng)友
.Net調(diào)用java的實(shí)現(xiàn)方法

一. IKVM1.1下載配置IKVM

1.1.1. 下載路徑

http://www.ikvm.net/index.html

1.1.2. 設(shè)置路徑

解壓ikvm-0.42.0.3.zip,并將%IKVM_HOME%/bin添加到path中。此處的%IKVM_HOME%是指解壓后ikvm的主目錄。

1.2第一種方式:直接將.class文件轉(zhuǎn)化成.dll

網(wǎng)站介紹

http://www.codePRoject.com/Articles/13549/Using-Java-Classes-in-your-NET-application

在Dos界面中輸入命令,轉(zhuǎn)到ikvm.exe應(yīng)用程序的目錄下;

同時將要轉(zhuǎn)化的.class文件(例如testmain.class文件)放到目錄下,在dos里輸入以下命令:

ikvmc<空格>–target:library<空格>testmain.class

可在C:/Program Files/ikvm/bin目錄下查看生成的.dll文件

鏈接介紹節(jié)目如下:

1.3第二種方式:將Java的項(xiàng)目的jar包轉(zhuǎn)化成.dll

c#直接調(diào)用java代碼,需要ikvmbin-0.44.0.5.zip

1. 下載并解壓

2. 配置環(huán)境變量:

在path中添加%IKVM_HOME%/bin,IKVM_HOME為解壓后的IKVM的主目錄。在dos界面,輸入"ikvm"命令,測試是否配置成功

3. 編寫java代碼(java代碼,要放在指定的package下,不要放在默認(rèn)包下):

1 package com.xyy.csharp;
 2 
3 import java.util.ArrayList;
 4 import java.util.List;
 5 
6 public class TestMain {
 7 
8 //獲得集合
 9 public List<Demo1> getLists(){
10 List<Demo1> lst=new ArrayList<Demo1>();
11 Demo1 d=new Demo1();
12 d.setId(1);
13 d.setName("admin");
14 Demo1 d2=new Demo1();
15 d2.setId(2);
16 d2.setName("sa");
17 
18 lst.add(d);
19 lst.add(d2);
20 return lst;
21 }
22 
23 //獲得字符串
24 public String getString(){
25 return "我是字符串";
26 }
27 
28 //獲得對象
29 public Demo1 getObject(){
30 Demo1 demo=new Demo1();
31 demo.setId(1);
32 demo.setName("admin");
33 return demo;
34 }
35 
36 //獲得boolean
37 public boolean getBoolean(){
38 return Boolean.TRUE;
39 }
40 
41 //在控制臺輸出
42 public void SystemOutPrint(){
43 System.out.println("我是控制臺輸出語句");
44 }
45 }

5. 將java項(xiàng)目打成jar包(test.jar),打包過程詳見備注:6. 在Dos界面中輸入命令,CD表示改變當(dāng)前目錄,轉(zhuǎn)到ikvm.exe應(yīng)用程序的目錄下;

同時將要轉(zhuǎn)化的.jar文件(例如ikvm.jar文件)放到目錄下,輸入命令,將ikvm.jar文件轉(zhuǎn)換成zhou.dll文件:

Ikvm命令格式:ikvmc<空格>-out:aaa.dll<空格>bbb.jar

其中:bbb.jar表示要轉(zhuǎn)化的.jar文件,aaa.dll表示要生成的.dll文件名。

7. 新建c#項(xiàng)目,引入以下三個dll:

%IKVM_HOME%/bin/IKVM.OpenJDK.Core.dll

%IKVM_HOME%/bin/IKVM.Runtime.dll

%IKVM_HOME%/bin/IKVM.Runtime.JNI.dll

引入剛剛打包的IKVM.dll

8.

9. 輸出結(jié)果:

10. c#不能直接接收java返回的集合,這里就沒深入研究了

備注:將JAVA項(xiàng)目打包成jar包過程

http://m.survivalescaperooms.com/myCodingSky/p/3347511.html

java項(xiàng)目打jar包分為2種情況:

一、java項(xiàng)目沒有導(dǎo)入第三方j(luò)ar包

1.首先在Eclipse中打開項(xiàng)目, 右鍵點(diǎn)擊項(xiàng)目,選擇“Export”;2. 選擇Java/JAR file,Next;3. Select the resources to export中可以選擇你想要包含的項(xiàng)目文件夾,一些不必要的文件夾就無需放進(jìn)去了,免得增大空間;這里有幾個選項(xiàng):*Export generated classfiles and resources 表示只導(dǎo)出生成的.class文件和其他資源文件* Export all output folders for checked projects 表示導(dǎo)出選中項(xiàng)目的所有文件夾* Export java source file and resouces 表示導(dǎo)出的jar包中將包含你的源代碼*.java,如果你不想泄漏源代碼,那么就不要選這項(xiàng)了* Export refactorings for checked projects 把一些重構(gòu)的信息文件也包含進(jìn)去

在Selectthe export destination中選擇導(dǎo)出的jar的路徑,Next4. 下一頁可以選擇是否導(dǎo)出那些含有警告warning或者錯誤errors的*.class文件。一般不用理他,Next5. 下一個頁面里可以對項(xiàng)目做一些配置。(如果項(xiàng)目沒有引入第三方j(luò)ar包,這項(xiàng)我們采用系統(tǒng)默認(rèn)的選項(xiàng)就OK,Mainclass一定要設(shè)置成為你項(xiàng)目的那個主方法入口類)* Generate the manifest file是系統(tǒng)幫我們自動生成MANIFEST.MF文件,如果你的項(xiàng)目沒有引用其他class-path,那可以選擇這一項(xiàng)。* Use existing mainfest from workspace 這是可以選擇我們自定義的.MF文件,格式如上所寫。* Seal content 要封裝整個jar或者指定的包packet* Main class 這里可以選擇你的程序入口,將來打包出來的jar就是你這個入口類的執(zhí)行結(jié)果。最后Finish,搞定。......

二、 java項(xiàng)目有導(dǎo)入第三方Jar包(例如項(xiàng)目中有導(dǎo)入sqlserver2005.jar包)

這時候打包就相對復(fù)雜一點(diǎn):

前面的4步和上面的情況是一樣,只是第5步需要選擇Useexisting mainfest from workspace選項(xiàng),并選擇你自己創(chuàng)建的一個MANIFEST. MF文件,因?yàn)橄到y(tǒng)默認(rèn)選擇的是Generate the manifest file選項(xiàng),而該選項(xiàng)不會將項(xiàng)目用到得第三方j(luò)ar包打入到j(luò)ava項(xiàng)目生成的jar包中去。

自定義配置文件MANIFEST.MF :

首先在項(xiàng)目的根目錄下創(chuàng)建一個MANIFEST.MF文件

接下來用記事本打開該文件,并編輯:

例如:Manifest-Version: 1.0Main-Class: StudentManager_TestClass-Path: sqlserver2005.jar其中的Manifest-Version是指程序的版本號,Main-Class是指程序的主方法入口類,slass-Path就指定了外來jar包的位置。請注意假設(shè)我們的項(xiàng)目打包后為project.jar,那么按照上面的定義,應(yīng)該在 project.jar的同層目錄下有相關(guān)的jar包(即sqlserver2005.jar,如果有引入多個第三方j(luò)ar包,則可以用空格隔開)放在里面。否則將會出現(xiàn)Exception in thread "main"java.lang.NoClassDefFoundError的錯誤。

二. Web Service

搭建JavaWebService

2.1什么是WebServices

它是一種構(gòu)建應(yīng)用程序的普遍模型,可以在任何支持網(wǎng)絡(luò)通信的操作系統(tǒng)中實(shí)施運(yùn)行;它是一種新的Web應(yīng)用程序分支,是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過Web調(diào)用。Web Service是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù).各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標(biāo)準(zhǔn)數(shù)據(jù)格式(Http,xml,Soap)來訪問Web Service,通過Web Service內(nèi)部執(zhí)行得到所需結(jié)果.Web Service可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。

關(guān)鍵的技術(shù)和規(guī)則

在構(gòu)建和使用Web Service時,主要用到以下幾個關(guān)鍵的技術(shù)和規(guī)則:

1.XML: 描述數(shù)據(jù)的標(biāo)準(zhǔn)方法.

2.SOAP: 表示信息交換的協(xié)議.

3.WSDL: Web服務(wù)描述語言.

4.UDDI: 通用描述、發(fā)現(xiàn)與集成,它是一種獨(dú)立于平臺的,基于XML語言的用于在互聯(lián)網(wǎng)上描述商務(wù)的協(xié)議。

XML

可擴(kuò)展的標(biāo)記語言(XML)是Web Service平臺中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺無關(guān)的,又是廠商無關(guān)的。無關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件廠商是不會選擇一個由競爭對手所發(fā)明的技術(shù)的。

SOAP

SOAP是Web Service的標(biāo)準(zhǔn)通信協(xié)議,SOAP為simple objectaccess protocoll的縮寫,簡單對象訪問協(xié)議. 它是一種標(biāo)準(zhǔn)化的傳輸消息的XML消息格式。

WSDL

WSDL的全稱是web service Description Language,是一種基于XML格式的關(guān)于web服務(wù)的描述語言。其主要目的在于web service的提供者將自己的web服務(wù)的所有相關(guān)內(nèi)容,如所提供的服務(wù)的傳輸方式,服務(wù)方法接口,接口參數(shù),服務(wù)路徑等,生成相應(yīng)的完全文檔,發(fā)布給使用者。使用者可以通過這個WSDL文檔,創(chuàng)建相應(yīng)的SOAP請求消息,通過HTTP傳遞給webservice提供者;web服務(wù)在完成服務(wù)請求后,將SOAP返回消息傳回請求者,服務(wù)請求者再根據(jù)WSDL文檔將SOAP返回消息解析成自己能夠理解的內(nèi)容。

UDDI

將web service進(jìn)行UDDI注冊發(fā)布,UDDI是一種創(chuàng)建注冊表服務(wù)的規(guī)范,以便大家將自己的web service進(jìn)行注冊發(fā)布供使用者查找.然而當(dāng)服務(wù)提供者想將自己的web service向全世界公布,以便外部找到其服務(wù)時,那么服務(wù)提供者可以將自己的web service注冊到相應(yīng)的UDDI商用注冊網(wǎng)站,目前全球有IBM等4家UDDI商用注冊網(wǎng)站。因?yàn)閃SDL文件中已經(jīng)給定了web service的地址URI,外部可以直接通過WSDL提供的URI進(jìn)行相應(yīng)的web service調(diào)用。所以UDDI并不是一個必需的web service組件,服務(wù)方完全可以不進(jìn)行UDDI的注冊。

2.2 創(chuàng)建并發(fā)布自己的WebService

1 安裝MyEclipse

2 配置Tomcat

打開MyEclipse

菜單欄 –> File –>New –> Web Service Project

在這里,我們使用JAX-WS方式

JAX-WS

Jax-WS是Java1.6中才有的,新的Web Service模式,基于注解的方式配置Web Service,很類似asp中的Web Service,難度已經(jīng)比Xfire方式的配置降低了很多.

REST(JAX-RS)

用的比較少

Xfire(已過時)

配置比較繁瑣

創(chuàng)建Service中的包及類庫,實(shí)現(xiàn)自己的業(yè)務(wù)。

我們創(chuàng)建的是一個用戶管理系統(tǒng),自然需要來管理用戶。

發(fā)布Web Service

到此WS發(fā)布完成,接下來配置TomCat

在彈出的窗體中依次展開 MyEclipse->Servers –>Tomcat

對著項(xiàng)目右擊添加庫文件

到此,所有步驟都以配置完畢 開始部署

啟動TomCat

在工具欄中找到部署圖標(biāo)

部署完成,打開IE進(jìn)行測試

2.3創(chuàng)建客戶端進(jìn)行測試

此時,項(xiàng)目中將會生成WS所需的類庫文件

創(chuàng)建一個調(diào)用測試類

到此,我們的Web Service就配置+測試完畢了。其實(shí)并不難,就算步驟比較多,比較繁瑣,容易忘記,可以當(dāng)一個備忘錄吧,方便以后翻閱!

參考資料:http://m.survivalescaperooms.com/lanxuezaipiao/p/3291641.html

http://blog.csdn.net/hehainan_86/article/details/28621989


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 渝中区| 电白县| 六枝特区| 科尔| 武乡县| 柘荣县| 茶陵县| 禄丰县| 赤壁市| 曲麻莱县| 龙海市| 旬阳县| 涟水县| 元朗区| 云和县| 通城县| 长沙县| 乐平市| 平陆县| 舞阳县| 汨罗市| 雅安市| 旬邑县| 基隆市| 孝昌县| 乌苏市| 奉节县| 饶河县| 长寿区| 安达市| 沙田区| 长沙县| 东乌| 封开县| 读书| 仁怀市| 同德县| 阿合奇县| 杭锦后旗| 磴口县| 西峡县|