2007年3月28日

          求助Axis 中文文檔

          求助Axis 中文文檔!請聯系我:zywmh1997@163.com
          posted @ 2007-03-28 16:48 小橋 流水 閱讀(836) | 評論 (0)編輯 收藏
          2007年3月15日

          人生中十件無能為力的事

          人生中十件無能為力的事:????
          ??
          1. 倒向你的墻????
          ??
          2. 離你而去的人????
          ??
          3. 流逝的時間????

          ??
          4. 沒有選擇的出身????
          ??
          5. 莫名其妙的孤獨????
          ??
          6. 無可奈何的遺忘????
          ??
          7. 永遠的過去????
          ??
          8. 別人的嘲笑????
          ??
          9. 不可避免的死亡????
          ??
          10. 不可救藥的喜歡??

          posted @ 2007-03-15 23:24 小橋 流水 閱讀(271) | 評論 (0)編輯 收藏
          2007年2月9日

          -jar參數運行應用時classpath的設置方法

          你是否在使用java -jar參數運行打包好的jar應用程序的時候發現應用程序無法找到classpath下設置好的第三方類庫的內容?無論怎么設置classpath參數都無濟于事,總是會報ClassNotFound的錯誤?那么本篇帖子可以幫助你擺脫煩惱 :)

          當用java -jar yourJarExe.jar來運行一個經過打包的應用程序的時候,你會發現如何設置-classpath參數應用程序都找不到相應的第三方類,報ClassNotFound錯誤。實際上這是由于當使用-jar參數運行的時候,java VM會屏蔽所有的外部classpath,而只以本身yourJarExe.jar的內部class作為類的尋找范圍。

          **解決方案**

          一 BootStrap class擴展方案

          Java 命令行提供了如何擴展bootStrap 級別class的簡單方法.
          -Xbootclasspath:?????完全取代基本核心的Java class 搜索路徑.
          ?????????????????????????????????? 不常用,否則要重新寫所有Java 核心class
          -Xbootclasspath/a: 后綴在核心class搜索路徑后面.常用!!
          -Xbootclasspath/p: 前綴在核心class搜索路徑前面.不常用,避免
          ?????????????????????????????????? 引起不必要的沖突.

          語法如下:
          ?(分隔符與classpath參數類似,unix使用:號,windows使用;號,這里以unix為例)
          ?java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar

          二 extend class 擴展方案

          Java exten class 存放在{Java_home}\jre\lib\ext目錄下.當調用Java時,對擴展class路徑的搜索是自動的.總會搜索的.這樣,解決的方案就很簡單了,將所有要使用的第三方的jar包都復制到ext 目錄下.

          三 User class擴展方案

          當使用-jar執行可執行Jar包時,JVM將Jar包所在目錄設置為codebase目錄,所有的class搜索都在這個目錄下開始.所以如果使用了其他第三方的jar包,一個比較可以接受的可配置方案,就是利用jar包的Manifest擴展機制.
          步驟如下:

          ?1.將需要的第三方的jar包,復制在同可執行jar所在的目錄或某個子目錄下.?比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包復制到/usrhome目錄下或/usrhome/lib 等類似的子目錄下.

          ?2.修改Manifest 文件

          ?在Manifest.mf文件里加入如下行

          ?Class-Path:classes12.jar lib/thirdlib.jar

          ?Class-Path 是可執行jar包運行依賴的關鍵詞.詳細內容可以參考?http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html?。要注意的是 Class-Path 只是作為你本地機器的CLASSPATH環境變量的一個縮寫,也就是說用這個前綴表示在你的jar包執行機器上所有的CLASSPATH目錄下尋找相應的第三方類/類庫。你并不能通過 Class-Path 來加載位于你本身的jar包里面(或者網絡上)的jar文件。因為從理論上來講,你的jar發布包不應該再去包含其他的第三方類庫(而應該通過使用說明來提醒用戶去獲取相應的支持類庫)。如果由于特殊需要必須把其他的第三方類庫(jar, zip, class等)直接打包在你自己的jar包里面一起發布,你就必須通過實現自定義的ClassLoader來按照自己的意圖加載這些第三方類庫。


          以上三種方法推薦第一種,擴展性好,操作起來也最方便.
          另外編寫自己的ClassLoader,來動態載入class,是更加復雜和高級技術.限于篇幅,不贅述.有興趣了解可以去google一下custom classloader,或者參考我的另一篇日志:讓classpath參數走開。

          Java的安全機制隨不同的JDK版本有不同的變化,會影響很多核心CLASS,比如Thread,所以很多大型商業軟件,要求JDK的版本很嚴格.部分原因也在此.這也要求在發布自己編寫的應用時候,不管大小,都要說明開發和測試的JDK版本.


          本文所述方法測試基于j2sdk 1.4.2_04-b05

          ----------------------------------------------------------------------------------------------

          附:背景知識

          自JDK 1.2以后,JVM采用了委托(delegate)模式來載入class.采用這種設計的原因可以參考http://java.sun.com/docs/books/tutorial/ext/basics/load.html

          歸納來講:是基于JVM sandbox(沙盒)安裝模型上提供應用層的可定制的安全機制.


          Java虛擬機(JVM)尋找Class的順序

          1. Bootstrap classes

          屬于Java 平臺核心的class,比如java.lang.String等.及rt.jar等重要的核心級別的class.這是由JVM Bootstrap class loader來載入的.一般是放置在{java_home}\jre\lib目錄下

          2. Extension classes

          基于Java擴展機制,用來擴展Java核心功能模塊.比如Java串口通訊模塊comm.jar.一般放置在{Java_home}\jre\lib\ext目錄下

          3. User classes

          開發人員或其他第三方開發的Java程序包.通過命令行的-classpath或-cp,或者通過設置CLASSPATH環境變量來引用.JVM通過放置在{java_home}\lib\tools.jar來尋找和調用用戶級的class.常用的javac也是通過調用tools.jar來尋找用戶指定的路徑來編譯Java源程序.這樣就引出了User class路徑搜索的順序或優先級別的問題.

          ?3.1 缺省值:調用Java或javawa的當前路徑(.),是開發的class所存在的當前目錄
          ?3.2 CLASSPATH環境變量設置的路徑.如果設置了CLASSPATH,則CLASSPATH的值會覆蓋缺省值
          ?3.3 執行Java的命令行-classpath或-cp的值,如果制定了這兩個命令行參數之一,它的值會覆蓋環境變量CLASSPATH的值
          ?3.4 -jar 選項:如果通過java -jar 來運行一個可執行的jar包,這當前jar包會覆蓋上面所有的值.換句話說,-jar 后面所跟的jar包的優先級別最高,如果指定了-jar選項,所有環境變量和命令行制定的搜索路徑都將被忽略.JVM APPClassloader將只會以jar包為搜索范圍.
          有關可執行jar有許多相關的安全方面的描述,可以參考http://java.sun.com/docs/books/tutorial/jar/ 來全面了解.

          這也是為什么應用程序打包成可執行的jar包后,不管你怎么設置classpath都不能引用到第三方jar包的東西了.

          posted @ 2007-02-09 09:59 小橋 流水 閱讀(657) | 評論 (0)編輯 收藏
          2006年12月25日

          獲取MAC地址!

          怎樣用java獲取MAC地址?
          posted @ 2006-12-25 22:22 小橋 流水 閱讀(216) | 評論 (0)編輯 收藏
          2006年12月24日

          hibernate遇到自增型的聯合主鍵該怎么辦?

          ????? 有一個組合主鍵,其中有一個主鍵是自增型的,象這樣的聯合主鍵,用hibernate能夠實現嗎?
          posted @ 2006-12-24 16:49 小橋 流水 閱讀(727) | 評論 (1)編輯 收藏
          2006年8月7日

          怎樣在和標簽中設置初值,

          怎樣在和"&lt;input name="file" type="file"&gt;<html:file perporty="file">"標簽中設置初值?</html:file>
          posted @ 2006-08-07 09:27 小橋 流水 閱讀(337) | 評論 (1)編輯 收藏
          2006年6月26日

          java中的equals()方法和"=="?

          ??? 在寫java程序時往往要遇到判斷兩個實例是否相等的問題,那么Object中的equals(Object),到底比較的是兩個實例中的什么呢?我認為他們比較的是創建實例時所深成的hashCode,(可是我的直覺認為不是這樣的),如下:
          ??? class Test {
          ??? ??? public String name;
          ???? }

          ??? Test t = new Test();
          ??? t.name = "hello";
          ??? Test two = new Test();
          ??? two.name = "hello";

          ??? 其中t.equals(two) 和  t == two 返回的都是false,(其中t和two這兩個實例所生成的hashCode是不相同的)

          ??? 而對如下:
          ??? String st = "hello";
          ??? String str = new String("hello");
          ??? 其中str.equals(str)和st == str返回的分別是true和false (其中st和str這兩個實例所生成的hashCode是相同的)

          ??? 這里我有一個問題,在什么情況下"=="才成立?以前我認為兩個實例的hashCode向同這兩個實例就成立了,可是上面的例子已經證明了不成立了。 那到底什么情況下"=="才成立呢?(不要告訴我,他們的條件是要在同一個實例的情況下,那我就倒!!!!!)

          ??? 那不同的實例與hashCode有什么樣的關系呢?
          posted @ 2006-06-26 16:35 小橋 流水 閱讀(532) | 評論 (2)編輯 收藏
          2006年6月25日

          dojo資料

          最近在尋求dojo方面資料,誰能夠提供點這方面的資料,非常感謝! 這里有人做了DOJO相關資料的翻譯,真是感謝,希望能夠早點看到以后的翻譯資料喲!http://www.aygfsteel.com/burnet/articles/54186.html
          posted @ 2006-06-25 09:46 小橋 流水 閱讀(482) | 評論 (0)編輯 收藏
          2006年6月24日

          一個hibernate中的事務問題?

          代碼:
          ??
          ??? Session session = HibernateUtil.currentSession();
          ??? Transaction trans = session.beginTransaction();
          ??? Admin a = (Admin) session.get(Admin.class, admin.getAdminId());
          ??? session.delete(a);
          ??? trans.commit();
          ??? HibernateUtil.closeSession();

          ??? 為什么像這樣的刪除操作必須要放在一個事務中才能夠執行,而去掉了事務性就不能夠執行刪除操作了呢?
          posted @ 2006-06-24 23:08 小橋 流水 閱讀(319) | 評論 (0)編輯 收藏

          Jbuilder中打包問題?

          ??? 我在Jbuilder 2005中與*.hbm.xml對應的pojo的java類,在打包成j2ee的war時,卻不能打包進去,這是什么問題?
          posted @ 2006-06-24 19:44 小橋 流水 閱讀(717) | 評論 (2)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 莱阳市| 措美县| 宣化县| 玛曲县| 昆明市| 安陆市| 凤城市| 沅江市| 都兰县| 秦安县| 巴林左旗| 固镇县| 宁陵县| 铜梁县| 长寿区| 临湘市| 五河县| 高碑店市| 湘西| 龙山县| 金华市| 隆尧县| 巴南区| 揭阳市| 东港市| 通山县| 澄城县| 平和县| 浪卡子县| 南平市| 锦屏县| 土默特右旗| 斗六市| 翁牛特旗| 南溪县| 区。| 德清县| 兰溪市| 昌图县| 泰兴市| 洛阳市|