WebService程序

在電腦安裝jdk1.8版本

華爲鏡像站(jdk-8u192-windows-x64.exe)
下載後安裝
jdk和jre安裝在不同文件夾
在這裏插入圖片描述

設置環境變量

環境變量相當於給系統或用戶應用程序設置的一些參數,比如path,是告訴系統,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。
用戶通過設置環境變量,來更好的運行進程

我的電腦存在兩個版本的jdk

在這裏插入圖片描述
我的環境變量

變量:JAVA_HOME8,JAVA_HOME13,JAVA_HOME,CLASSPATH,PATH
其中:
JAVA_HOME8 = D:\java\java8\jdk
JAVA_HOME13 = D:\java\java13\jdk
JAVA_HOME = %JAVA_HOME8%   //通過該變量來切換版本號
PATH變量添加以下內容
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 
設置CLASSPATH變量
CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

java -version
javac -version 
檢查變量是否配置成功
並編譯運行程序測試

變量解釋

在java環境變量設置中,真正起作用的只有path 和 classpath,java_home有可能被第三方軟件使用。
JAVA_HOME
變量名:JAVA_HOME
用途:定義一個變量,供其他地方使用,或被某些第三方軟件使用
Path
變量名:Path
用途:讓系統在任何路徑下都可以識別java、javac、javap等命令
CLASSPATH
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
用途:告訴jvm要使用或執行的class放在什麼路徑上,便於JVM加載class文件,.;表示當前路徑,tools.jar和dt.jar爲類庫路徑
CLASSPATH詳解
tools.jar
工具類庫(編譯和運行等),它跟我們程序中用到的基礎類庫沒有關係。我們注意到在Path中變量值bin目錄下的各個exe工具的大小都很小,一般都在27KB左右,這是因爲它們實際上僅僅相當於是一層代碼的包裝,這些工具的實現所要用到的類庫都在tools.jar中,用壓縮軟件打開tools.jar,你會發現有很多文件是和bin目錄下的exe工具相對性的。當然,如果tools.jar的功能只有這些的話,那麼我們根本不用把它加入到CLASSPATH變量中,因爲bin目錄下的工具自己可以完成對這些類庫的調用,因此tools.jar應該還有其他的功能。在裏面還可以看到有Applet和RMI等相關的文件,因此tools.jar應該還是遠程調用等必須的jar包。tools.jar的其他作用可以查看其他資料。

dt.jar
運行環境類庫,主要是Swing包,這一點通過用壓縮軟件打開dt.jar也可以看到。如果在開發時候沒有用到Swing包,那麼可以不用將dt.jar添加到CLASSPATH變量中。
CLASSPATH中的類庫是由Application ClassLoader或者我們自定義的類加載器來加載的,這裏當然不能包括基礎類庫,如果包括基礎類庫的話,並用兩個不同的自定義類加載器去加載該基礎類,那它得到的該基礎類就不是唯一的了,這樣便不能保證Java類的安全性。

基本類庫和擴展類庫rt.jar
基本類庫是所有的 import java.* 開頭的類,在 %JAVA_HOME%\jre\lib 目錄下(如其中的 rt.jar、resource.jar ),類加載機制提到,該目錄下的類會由 Bootstrap ClassLoader 自動加載,並通過親委派模型保證了基礎類庫只會被Bootstrap ClassLoader加載,這也就保證了基礎類的唯一性。

擴展類庫是所有的 import javax.* 開頭的類,在 %JAVA_HOME%\jre\lib\ext 目錄下,該目錄下的類是由Extension ClassLoader 自動加載,不需要我們指定。

rt.jar 默認就在根ClassLoader的加載路徑裏面,放在CLASSPATH也是多此一舉。

參考鏈接
觀察path變量可知,各路徑用;號間隔,有些變量末尾沒加分號會出錯,不過我沒有碰見
%xxx% 表示引用某環境變量
若環境變量一直出錯,可以在命令行窗口用set + 環境變量名的方式檢查是否正確添加

set classpath

另外,可以將環境變量以文本形式複製到notepad等記事本軟件編輯檢查
在這裏插入圖片描述

問題解決

wind10的環境變量中的Path如何列表顯示

如果你的變量值以%開頭,打開編輯的時候就會顯示一串的變量值,不方便查找編輯,所以將變量值更改爲以盤符開始,就可以解決這個問題,比如:D:\WorkSoft\app\product\11.2.0\dbhome_1\bin
不一定%開頭就無法顯示

更換JDK版本後,修改環境變量也無法生效的原因和解決辦法

原因: 當使用安裝版本的JDK程序時(一般是1.7版本以上),在安裝結束後安裝程序會自動將java.exe、javaw.exe、javaws.exe三個可執行文件複製到C:\Windows\System32目錄,這個目錄在WINDOWS環境變量中的優先級高於JAVA_HOME設置的環境變量優先級,故此直接更改JAVA_HOME會無效。
另外,JDK1.8安裝版本,還會在C:\ProgramData\Oracle\Java目錄中生成一些配置文件,並同時將此目錄寫到環境變量中的Path中。

解決:
刪除C:\Windows\System32目錄下的java.exe、javaw.exe、javaws.exe三個文件
刪除環境變量Path中C:\ProgramData\Oracle\Java\javapath的配置

解決JDK13沒有jre問題

.進入命令控制檯(必須使用管理員權限,否則報錯)
2.進入jdk目錄後輸入bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre(可直接複製這條鏈接)

參考鏈接
同一個電腦安裝兩個jdk版本
wind10的環境變量中的Path如何列表顯示
更換JDK版本後,修改環境變量也無法生效的原因和解決辦法

運行webservice程序

http://www.webxml.com.cn/zh_cn/web_services.aspx網站中選取一個服務
我這裏選擇了第一個服務 中文<->英文雙向翻譯WEB服務
在這裏插入圖片描述

WSDL: http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl 

使用命令導入wsproxy包

wsimport -keep -p wsproxy http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl 

出現解析組件 ‘s:schema’ 時出錯。在該組件中檢測到 's:schem的錯誤
在這裏插入圖片描述

解析組件 ‘s:schema’ 時出錯。在該組件中檢測到 's:schem

解決:
將http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl的xml文件保存到本地,
而後將文件中的<s:element ref=“s:schema” /> <s:any />全部替換爲<s:any minOccurs=“2” maxOccurs=“2” />
在cmd中用wsimport命令生成客戶端代碼,這時候的wsdl路徑爲本地文件的路徑
這樣就能導入wsproxy包

示例程序

下載幫助文檔,查看api,以下調用translatorString方法實現簡單的功能

package client;

import wsproxy.*;

import java.util.List;


public class WebServiceClient {
    public static void main(String[] args) {
        EnglishChinese service = new EnglishChinese();
        EnglishChineseSoap pService = service.getEnglishChineseSoap();

        ArrayOfString result1_1 = pService.translatorString("你好");
        List<String> res1_1 = result1_1.getString();
        for (String s : res1_1) {
            System.out.println(s);
        }
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章