<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    #

         摘要: 8.4.2  建立AIDL服務的步驟(2) 在編寫上面代碼時應注意如下兩點: 使用bindService方法來綁定AIDL服務。其中需要使用Intent對象指定AIDL服務的ID,也就是<action>標簽中android:name屬性的值。 在綁定時需要一個ServiceConnection對象。創建ServiceConnection對象的過程中如果綁定成功,系統會調...  閱讀全文
    posted @ 2010-11-19 16:58 小菜毛毛 閱讀(566) | 評論 (0)編輯 收藏

         摘要: http://book.51cto.com/art/201006/207070.htm 建立AIDL服務的步驟(1) 建立AIDL服務要比建立普通的服務復雜一些,具體步驟如下: (1)在Eclipse Android工程的Java包目錄中建立一個擴展名為aidl的文件。該文件的語法類似于Java代碼,但會稍有不同。詳細介紹見實例52的內容。 (2)如果aidl文件的內容是正確的,ADT...  閱讀全文
    posted @ 2010-11-19 16:56 小菜毛毛 閱讀(1149) | 評論 (0)編輯 收藏

         摘要: http://blog.chinaunix.net/u3/90876/showart_2200991.html 在Android中, 每個應用程序都可以有自己的進程. 在寫UI應用的時候, 經常要用到Service. 在不同的進程中, 怎樣傳遞對象呢? 顯然, Java中不允許跨進程內存共享. 因此傳遞對象, 只能把對象拆分成操作系統能理解的簡單形式, 以達到跨界對象訪問的目的. 在J2EE中,...  閱讀全文
    posted @ 2010-11-19 15:41 小菜毛毛 閱讀(4087) | 評論 (0)編輯 收藏

    http://zenz.ourcafe.mobi/archives/216

    在有APKTool之前,Android軟件的漢化是一件非常痛苦的事情。例如漢化狂人的漢化工具,那都是直接修改二進制文件的,首先 是尋找需要修改的字符串苦難(當然漢化狂人已經做得不錯了),然后修改的字符串長度還要注意中文長度不能長過原來的文字……個中郁悶就不細說了。

    APKTool可以說是一個革命性的工具,有了APKTool之后,可以說,俺拽軟件的漢化工作到了一個前所未有的簡單程度。
    閑話不說,我們用漢化實例來證明APKTool的方便簡單,在動手之前,需要去 APKTool 的網站把工具下載下來。當然也可以下載我已經打包的 APKTool.zip(Windows下使用)。

    確保你的電腦已經安裝了JDK1.6(JRE1.6也可以),而且安裝了一個優秀的編輯軟件(推薦UltraEdit),把APKTool解壓到隨便哪個你認為操作起來方便的目錄。如果都好了,我們動手吧:

    第一步,把需要漢化的文件(以漢化ColorNote為例)放到APKTool所在目錄,然后命令行進入APKTool目錄,執行下面的命令:

    apktool  d  ColorNote.apk  ColorNote

    這句命令的意思是,對ColorNote.apk這個程序進行反編譯,獲得的文件放在當前目錄下的ColorNote目錄中。正常反編譯的話,能看到下面的提示:

    I: Baksmaling…
    I: Decoding resource table…
    I: Decoding resources…
    I: Copying assets and libs…

    反編譯完成,會在APKTool的目錄下面,出現一個名叫ColorNote的目錄,進去看看,是這個樣子的!

    用UltraEdit打開這個AndroidManifest.xml看看?哈哈,是純文本文件呀!在打開res目錄中的values中隨便一個文 件看看?也是純文本文件啊!也就是說,只要一個UltraEdit,我們就可以輕輕松松進行漢化了(就把需要的字符串轉換成中文就可以了,也不用考慮長度 了!)至于要漢化哪些內容,這個大家自己研究吧,不用我詳細說,也沒有辦法詳細說的吧?(事實上,除了XML的文本資源文件外,老外寫的很多程序,字符串 都是hard coding在執行代碼里面的,APKTool反編譯會得到smali偽代碼,有些在XML資源里面找不到的字符串,去看看smali的代碼吧。)

    中間的翻譯過程我們跳過去,例如我們已經翻譯好了,就在APKTool目錄下執行下面的命令行:

    apktool b ColorNote

    這條命令是告訴APKTool,把這個ColorNote目錄里的東西編譯打包成APK程序

    I: Checking whether sources has changed…

    I: Smaling…

    I: Checking whether resources has changed…

    I: Building resources…

    I: Building apk file…

    生成的APK程序在哪里呢?在ColorNote\Dist目錄里面,名字是out.apk

    我們把這個out.apk文件簽名之后安裝看看?哈哈!完美中文漢化的俺拽程序來了!(當然,這要看漢化者的功力了。)

    Popularity: 76%

    posted @ 2010-11-19 09:51 小菜毛毛 閱讀(398) | 評論 (0)編輯 收藏

    http://www.cn-java.com/www1/?action-viewnews-itemid-3054
    ... set CATALINA_HOME=C:\Tomcat4.1.29 set CLASSPATH=%JAVA_HOME%\lib\tools.jar set CLASSPATH=%JAVA_HOME%\soap-2.3.1\lib\soap.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\javamail-1.3.1\mail.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\jaf-1.0.2\activation.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesImpl.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesSamples.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xml-apis.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xmlParserAPIs.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\servlet.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\tools.jar ... 如果你的安裝路徑(installation paths)和上面使用的不同,你需要更正它們,然后關閉和重啟Tomcat以使它們生效。這樣,你就有為運行SOAP作好了準備。但是現在,我要忘記有 關的技術部分,來學一點理論知識。 SOAP意思是簡單對象訪問協議(Simple Object Access Protocol)。的確如它的名字一樣,SOAP是很簡單的。它是一個基于XML的協議,允許程序組件和應用程序彼此使用一種標準的Internet協 議--HTTP來通訊。SOAP是一種獨立的平臺,它不依賴程序語言,它是簡單的,彈性的,很容易擴展的。目前,應用程序能夠彼此使用一種基于DCOM和 CORBA技術的遠程過程調用(RPC)來進行相互通訊,但HTTP不被設計為這個目的。RPC在Internet上應用是非常困難的,它們會出現許多兼 容性和安全性的問題,因為防火墻和代理服務器通常都會阻斷(block)這些類型的流量。應用程序之間最好的通訊方式是通過HTTP協議,因為HTTP是 支持所有Internet瀏覽器和服務器的。基于這個目的,SOAP協議被創建出來。 那么,它們是如何運作的呢?比如,一個應用程序(A)需要和另一個應用程序(B)在SOAP的幫助下進行彼此通訊。它們將使用下面的框架圖來完成這個 過程: 這個SOAP信封(SOAP envelope)是一個包含以下內容的XML文檔: 正如你看到的,它是非常簡單的。它看起來確實就象一個普通的信封或者你的email。你想看看它們是如何動作的嗎?下面跟我們一起來吧。其實我們有很多方 法是不用SOAP來在創建和運行我們自己的“Hello World”應用程序的,但是因為我們要保持它的簡單性,我會給你一個它運作方式的框架圖(scheme)。 我們的“Hello World”范例會包含一個SOAP Service。我們的SOAP Client將發送它們的名字到該SOAP Service,并試圖得到一些答復或響應。這個SOAP Service需要部署到一個SOAP Admin的工具,以至重定位所有請求的SOAP(Proxy) RPC Router能夠知道它們應該使用哪種服務來運作。總而言之,這個是以下面的方式來運作的: 現在,我們來一步步的看看到底發生了什么。在Step 1里,HelloWorldClient將連接一個SOAP RPC Router,請求我們的SOAP Service并將包含我們名字的一個字符串傳遞給它。該SOAP RPC Router會檢查是否它已經部署了這個SOAP Service。如果它被發現是被部署的,那么它將傳遞數據到這個SOAP Service并調用特定的方法,這個是Step 2。然后SOAP Service方法會被執行,將返回某個字符串值(該值就是SOAP Client的答復或者響應)(Step 3)。在Step4中,SOAP RPC Router將僅僅只是重定向這個數據到SOAP Client。所有在Step1和Step4里傳輸的數據是通過SOAP Envelope來完成的。正如你所看到的,算法是相當簡單的,因此我們只準備關心實際的代碼。 首先,我們要創建一個SOAP Service。下面是它的代碼,請不要忘記將它放入HelloWorld/ 目錄中(必須被包含在你的CLASSPATH中): 1: // SOAPService.java 2: package HelloWorld; 3: public class SOAPService { 4: public String sayHi(String x) { 5: return("Hello my friend, " + x + "! Glad to see you!"); 6: } 7: } 添加任何注釋也是很容易的。要編譯它,只需要用下列命令: javac SOAPService.java 第二步,一旦我們準備好了SOAP Service,我們需要用SOAP Service Manager來部署它。這個可以通過很多方式來實現,但是為了能讓初學SOAP的讀者更容易理解SOAP,我提供了一個最容易的方式。我們假設你的 Web Server(Tomcat或其他)已經正常運行,并且你已經正確安裝了SOAP。那么當瀏覽器訪問http://localhost:8080 /soap/,你會看見Apache SOAP的歡迎頁面。點擊Run the admin client ,然后 Deploy。你會得到一個屏幕顯示,在那里你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表單域中。你能忽略其他所有的表單域,除非你真的需要它們的信息。我們的“HelloWorld”例子不需要它們,所以,我們填 的下面的值: ID: urn:HelloWorld_SOAPService Scope: Application Methods: sayHi Provider Type: java Java Provider - Provider Class: HelloWorld.SOAPService Java Provider - Static? No 一些注釋:ID是我們要從SOAP Client標識我們的SOAP Service的唯一名字。Method包含SOAP Service提供的一系列方法。JAVA Provider-Provider Class是SOAP Service Java類的名字。 現在,點擊Deploy 按鈕,那么你的服務會被部署。再次強調,請注意正確設置CLASSPATH環境變量。然后,你的HelloWorld.SOAPService類能夠被找 到,并且所有必需的jar包也能被找到。這是個幾乎每個人都會犯的普通錯誤。現在,你能夠點擊 List ,將會看見你的服務已經被部署進來。恭喜! 最后,讓我們來創建一個SOAP Client。代碼看起來有點復雜,但是在現實中不會只有這么點長。 1: // HelloWorldClient.java 2: import java.io.*; 3: import java.net.*; 4: import java.util.*; 5: import org.apache.soap.*; 6: import org.apache.soap.rpc.*; 7: public class HelloWorldClient { 8: public static void main(String[] arg) throws Exception { 9: Call c = null; 10: URL url = null; 11: Vector params = null; 12: Response rep = null; 13: String ourName = "Superman"; 14: String ourUrn = "urn:HelloWorld_SOAPService"; 15: String ourMethod = "sayHi"; 16: url = new URL("http://localhost:8080/soap/servlet/ rpcrouter"); 17: System.out.println("Passing to our deployed "+ourUrn+" our name ("+ourName+"): "); 18: c = new Call(); 19: c.setTargetObjectURI(ourUrn); 20: c.setMethodName(ourMethod); 21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 22: params = new Vector(); 23: params.addElement(new Parameter("ourName", String.class, ourName, null)); 24: c.setParams(params); 25: System.out.print("and its answer is: "); 26: rep = c.invoke(url, ""); 27: if (rep.generatedFault()) { 28: Fault fault = rep.getFault(); 29: System.out.println("\nCall failed!"); 30: System.out.println("Code = " + fault.getFaultCode()); 31: System.out.println("String = " + fault.getFaultString()); 32: } else { 33: Parameter result = rep.getReturnValue(); 34: System.out.print(result.getValue()); 35: System.out.println(); 36: } 37: } 38:} 下面我要做一些解釋。在第13行,我們設置了我們的名字,這個名字將會傳遞給SOAP Service。在第14行,我們設置了我們將要調用的服務的ID(service ID),和第15行里設置的服務方法(service method)。有了這個ID,服務能夠被部署到SOAP服務管理器(SOAP Service Manager)中。我們沒有設置任何其他值,僅僅只用剛才那些基礎值就可以正常運作了。你能從SOAP的官方文檔上得到相關信息,該文檔來自SOAP包 中,它們的解釋超出了本文的范圍。 用以下方式編譯這個SOAP Client: javac HelloWorldClient.java 為了圓滿完成它,讓我們檢查一下針對我們的測試,是否所有事情都準備就緒。Tomcat正在運行,所有的環境變量都正確,SOAP Service被編譯和部署,SOAP Client被成功編譯。OK,讓我們運行它,你將看到這個屏幕: 正如你所看到的,我們的SOAP Client使用SOAP協議成功發送它的名字和接收了一個答復。正如前面所說的,SOAP Service發送和接收的是SOAP envelope。這個是SOAP envelope的源代碼。 被發送到SOAP Service的SOAP Envelope <?xml version=1.0 encoding=UTF-8?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:sayHi xmlns:ns1="urn:HelloWorld_SOAPService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/ soap/encoding/"> <ourName xsi:type="xsd:string">Superman</ourName> </ns1:sayHi> </SOAP-ENV:Body> </SOAP-ENV:Envelope>: 從SOAP Service接收的SOAP Envelope <?xml version=1.0 encoding=UTF-8?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:sayHiResponse xmlns:ns1="urn:HelloWorld_SOAPService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap. org/soap/encoding/"> <return xsi:type="xsd:string">Hello my friend, Superman! Glad to see you!</return> </ns1:sayHiResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 要理解SOAP Envelope中的所有標簽的含義,我建議你花一點時間閱讀 http://www.w3.org/2001/06/soap-envelope 命名空間規范。 我希望本文能夠在你理解SOAP技術上有一定幫助。這個技術是簡單的,有趣的,強大的,彈性的。它被用在許多Web
    posted @ 2010-11-18 10:22 小菜毛毛 閱讀(889) | 評論 (0)編輯 收藏

    做客戶端有必要對soap做基本的了解,開發手機的程序員可能對web service不是太了解。
    soap簡單說是基于xml的,建立在http協議上的協議,用來調用web server提供的service。
    這里轉載一個對soap的簡單原理,希望對大家有幫助

    什么是Web Services
      
      從表面上看,Web service 就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。也就是說,可以利用編程的方法通過Web來調用這個應用程序。
      
      對Web service 更精確的解釋: Web services是建立可互操作的分布式應用程序的新平臺。Web service平臺是一套標準,它定義了應用程序如何在Web上實現互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。
      
      不管你的Web service是用什么工具,什么語言寫出來的,只要你用SOAP協議通過HTTP來調用它,總體結構都一致。通常,你用你自己喜歡的語言(如VB 6或者VB.NET)來構建你的Web service,然后用SOAP Toolkit或者.NET的內建支持來把它暴露給Web客戶。于是,任何語言,任何平臺上的客戶都可以閱讀其WSDL文檔,以調用這個Web service。客戶根據WSDL描述文檔,會生成一個SOAP請求消息。Web service都是放在Web服務器 (如IIS) 后面的,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web服務器來。Web服務器再把這些請求轉發給Web service請求處理器。請求處理器的作用在于,解析收到的SOAP請求,調用Web service,然后再生成相應的SOAP應答。Web服務器得到SOAP應答后,會再通過HTTP應答的方式把它送回到客戶端。

    iGoogle 發表于 2010-10-24 17:00

    基本概念
      
      SOAP
      
      XML和XSD
      
      WSDL(Web Services Description Language)
      
      WSML(Web Services Meta Language)
      
      什么時候使用Web Services
      
      Web service是創建可互操作的分布式應用程序的新平臺。Web service 的主要目標是跨平臺的可互操作性。為了達到這一目標,Web service 是完全基于XML、XSD等獨立于平臺、獨立于軟件供應商的標準的。
      
      Web service在應用程序跨平臺和跨網絡進行通信的時候是非常有用的。Web service適用于應用程序集成、B2B集成、代碼和數據重用,以及通過Web進行客戶端和服務器的通信的場合。
      
      當然,Web service也不是萬能的,你不能到處濫用Web service。在有些情況下,Web service 會降低應用程序的性能,而不會帶來任何好處。例如,一臺機器或一個局域網里面運行的同構應用程序就不應該用Web service 進行通信。
      
      如何調用Web Services
      
      客戶端:取得服務端的服務描述文件WSDL,解析該文件的內容,了解服務端的服務信息,以及調用方式。根據需要,生成恰當的SOAP請求消息(指定調用的方法,已經調用的參數),發往服務端。等待服務端返回的SOAP回應消息,解析得到返回值。


      服務端:生成服務描述文件,以供客戶端獲取。接收客戶端發來的SOAP請求消息,解析其中的方法調用和參數格式。根據WSDL和WSML的描述,調用相應的COM對象來完成指定功能,并把返回值放入SOAP回應消息返回給用戶。
      
      高層接口
      
      使用高層接口,不需要知道SOAP和XML的任何信息,就可以生成和使用一個WebService。Soap Toolkit 2.0通過提供兩個COM對象――SoapClient和SoapServer,來完成這些功能。
      
      在客戶端,只需要生成一個SoapClient實例,并用WSDL作為參數來調用其中的mssoapinit方法。SoapClient對象會自動解析 WSDL文件,并在內部生成所有Web Service的方法和參數信息。之后,你就可以像調用IDispatch接口里的方法一樣,調用里面所有的方法。在VB或是腳本語言里,你甚至可以直接在SoapClient對象名后面直接加上.方法(參數…)進行調用。
      
      低層接口
      
      要使用低層接口,你必須對SOAP和XML有所了解。你可以對SOAP的處理過程進行控制,特別是要做特殊處理的時候。
      
      在客戶端,首先要創建一個HttpConnector對象,負責HTTP連接。設定Connector的一些頭部信息,比如EndPoinURL和 SoapAction等。如果網絡連接需要使用代理服務器,那也要在這里設定相關的信息。接著創建SoapSerializer對象,用于生成Soap消息。按照WSDL里定義,把所有參數按順序序列化,得到一個完整的SOAP請求消息。該Soap消息,作為Payload通過HttpConnector 被發送到服務端。最后,生成一個
    posted @ 2010-11-15 16:57 小菜毛毛 閱讀(12103) | 評論 (0)編輯 收藏

         摘要: Activity Android中,Activity是所有程序的根本,所有程序的流程都運行在Activity之中,Activity具有自己的生命周期(見http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html,由系統控制生命周期,程序無法改變,但可以用onSaveInstanceState保存其狀態)。 對于Activity,關...  閱讀全文
    posted @ 2010-11-15 14:13 小菜毛毛 閱讀(448) | 評論 (0)編輯 收藏

    手機上的應用程序,別人的界面設計的很漂亮,很想知道別人的怎么設計的,我應該怎么做呢?
    在沒有遇到這個工具前 我是通過破解別人的程序去查看他的設計的。
    那天無意中在 tools這個文件夾下發現這個文件 hierarchyviewer.bat,Google一下發現幫你分析應用程序UI布局。
    現在我們開始使用它吧:
    第一步,雙擊(廢話),出現一個灰色的界面,大家不要急,這是因為它沒有發現運行的android程序呢
    第二步:啟動android程序,(或者連接android手機),你會發現在 Hierarchy Viewer 的 Devices里有 emulator-5554(這個是我的模擬器),然后選擇 start servier
    如圖


    選擇 MainActivity,點擊Load view Hierarchy
    如圖


    你還可以通過左下角的按鈕交換到界面視圖



    這就是你手機上看到的效果,看到藍色的細線沒有?你可以拖動他,右邊會顯示他的顏色的坐標
    你也可以把這些東西導出來,怎么樣 好用吧
    posted @ 2010-11-15 13:31 小菜毛毛 閱讀(356) | 評論 (1)編輯 收藏

         摘要: 轉載自:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 在android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,并且能夠根據數據的長度自適應顯示。抽空把對ListView的使用做了整理,并寫了個小例子,如下圖。    列表的顯示需要三個元素: 1.ListVeiw ...  閱讀全文
    posted @ 2010-11-14 16:28 小菜毛毛 閱讀(2044) | 評論 (0)編輯 收藏

    javac -classpath的使用: 

    javac:如果當前你要編譯的java文件中引用了其它的類(比如說:繼承),但該引用類的.class文件不在當前目錄下,這種情況下就需要在javac命令后面加上-classpath參數,通過使用以下三種類型的方法 來指導編譯器在編譯的時候去指定的路徑下查找引用類。 

    (1).絕對路徑:javac -classpath c:\junit3.8.1\junit.jar   Xxx.java 
    (2).相對路徑:javac -classpath ..\junit3.8.1\Junit.javr  Xxx.java 
    (3).系統變量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系統變量CLASSPATH的值進行查找,這里假設Junit.jar的路徑就包含在CLASSPATH系統變量中) 

    javac 絕對路徑的使用: 

    javac:假設你要編譯的類文件名叫:HelloWorld.java,其完全路徑為:D:\java\HelloWorld.java。但你所在的當前目錄是:C:\Documents and Settings\peng>。如果想在這里執行編譯,會有什么結果呢? 

    (1).C:\Documents and Settings\peng> javac HelloWorld.java 這時編譯器會給出如下的錯誤提示信息: 
    error: cannot read: HelloWorld.java 
    這是因為默認情況下javac是在當前目錄下查找類文件,很明顯這個路徑不是我們存放類文件的地方,所以就會報錯了 
            
    (2).C:\Documents and Settings\peng>javac D:\java\HelloWorld.java 
    這時編譯成功。 
    所以,只要你執行javac命令的目錄不是類文件存放的目錄,你就必須在javac命令中顯式地指定類文件的路徑。 

    java -classpath的使用: 

    java:假設我們的CLASSPATH設置為:D:\peng\java\pro ,在該目錄下有三個文件:HelloWorld.java / HelloWorldExtendsTestCase / HelloWorldExtendsHelloWorld。這三個文件的類聲明分別如下: 

    HelloWorld.java :public class HelloWorld 
    HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld 
    HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase 

          假設我們已經按照上面關于javac -classpath和javac 絕對路徑的使用,順利地完成了三個文件地編譯。現在我們在C:\Documents and Settings\peng>目錄下執行這三個.class文件 

    (1).C:\Documents and Settings\peng>java  HelloWorld 
          Hello World 

    可以看到執行成功。為什么我們在 C:\Documents and Settings\peng>執行命令,JVM能夠找到D:\peng\java\pro\HelloWorld.class文件呢?這是因為我們配置了系統變量CLASSPATH,并且指向了目錄:D:\peng\java\pro 。所以JVM會默認去該目錄下加載類文件,而不需要指定.class文件的絕對路徑了。 
             
    (2).C:\Documents and Settings\peng>java HelloWorldExtendsHelloWorld 
           Hello World 

    可以看到執行成功了。HelloWorldExtendsHelloWorld繼承了HelloWorld類,所以在執行時JVM會先查找在CLASSPATH下是否存在一個HelloWorld.class文件,因為我們已經成功編譯了HelloWorld 類了,所以可以成功執行HelloWorldExtendsHelloWorld.class 
      
    (3).C:\Documents and Settings\peng>java HelloWorldExtendsTestCase 
         Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase 

    可以看到程序拋出異常了,提示找不到junit.framework.TestCase文件。為什么同樣在:\peng\java\pro 下,HelloWorldExtendsHelloWorld.class就可以成功執行,而這個就不行了呢?這是因為:            junit.framework.TestCase.class文件并不存在于當前目錄下,所以為了能夠讓程序成功運行,我們必須通過指定CLASSPATH的方式,讓JVM可以找到junit.framework.TestCase這個類,如(4): 

    (4). C:\Documents and Settings\peng>java -classpath %CLASSPATH% HelloWorldExtendsTestCase 
          Hello World 

    總結: 

    (1).何時需要使用-classpath:當你要編譯或執行的類引用了其它的類,但被引用類的.class文件不在當前目錄下時,就需要通過-classpath來引入類 
    (2).何時需要指定路徑:當你要編譯的類所在的目錄和你執行javac命令的目錄不是同一個目錄時,就需要指定源文件的路徑(CLASSPATH是用來指定.class路徑的,不是用來指定.java文件的路徑的) 

    [轉自: 
    http://blog.csdn.net/pengpenglin/ 
    http://www.tkk7.com/pengpenglin/ 
    ] 
    posted @ 2010-10-19 22:32 小菜毛毛 閱讀(10738) | 評論 (0)編輯 收藏

    僅列出標題
    共17頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 久久99精品免费视频| 国产A∨免费精品视频| 国产1000部成人免费视频| 国产亚洲人成无码网在线观看| 一级毛片人与动免费观看| 一区二区三区亚洲视频| 日本精品久久久久久久久免费| 国产免费人成视频在线观看| 久久精品国产亚洲AV未满十八| 免费乱码中文字幕网站| 四虎影视久久久免费| 夜夜春亚洲嫩草影院| 成人黄网站片免费视频| 日韩精品一区二区亚洲AV观看| 亚州免费一级毛片| 亚洲大成色www永久网址| 永久黄网站色视频免费| 四虎一区二区成人免费影院网址| 中文字幕精品亚洲无线码二区| 免费无码又爽又刺激网站| 日木av无码专区亚洲av毛片| 在线视频观看免费视频18| 久久夜色精品国产噜噜亚洲a| 国产免费av片在线播放| 国产裸体美女永久免费无遮挡| 久久精品国产亚洲AV麻豆王友容 | 在线观看视频免费国语| 老司机午夜在线视频免费观| 色久悠悠婷婷综合在线亚洲| 日韩精品无码专区免费播放| 亚洲熟妇无码AV| 精品国产亚洲男女在线线电影| 91老湿机福利免费体验| 亚洲人片在线观看天堂无码| 亚洲精品国产日韩无码AV永久免费网 | 精品女同一区二区三区免费站| 亚洲精品无AMM毛片| 亚洲高清国产AV拍精品青青草原| 97免费人妻无码视频| 成人免费网站视频www| 亚洲制服中文字幕第一区|