mimi_van

          吞下寂寞的戀人
          posts - 30, comments - 45, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          如果你常常用 Eclipse 或者 MyEclipse ,那你就會跟我一樣,會在保存頁面的時候經常遇到這樣的提示

          some character can not mapped using "iso-8859-1" character encoding ......

          以前上學的時候,老師講過類似的解決辦法,就是

          1.右鍵選種 該項目,或該文件

          2.點擊 properties ,看到左邊 第一個 選項 info 了吧。
             左邊就是該選項的詳細信息

          3.更改里面的 Text File Encoding
              選擇 other 里面的 utf-8 (推薦嘍)

          然后ok了。

          以前總是編譯一些java源文件或者 jsp 文件。好像這個問題也都能解決

          但是,今天用 MyEclipse 編寫了一個后綴名為 .js 的文件,又碰到了這個問題,就發現這個方法不再管用了

          上網google了下,,(可真是要感激google啊)發現了其他的解決之道,嘗試后,OK了,記錄到這里,跟大家共勉。

          方法一: 使用eclipse的jinto插件編輯,會自動調用java的native2ascii把文件轉碼。
          
          方法二:  1. Eclipse-->Preferences..(MyEclipse --> Window -->Preferences:)

                            2. 在“type filter text“的框框里輸入”Content Types

                            3. 輸入完后,Eclipse 會自動進行查找,然后會在右邊顯示出 Content Types 的屬性

                    4. 點擊右邊的Text,選擇 Java Properties File,看一下 下面的兩個選項 

                                     <1>:File associatios:   ----- 看看里面有沒有 你需要的文件類型,
                                            默認的是*.porperties(locked)
                                            我需要的*.js ,所以這時點擊 Add 按鈕,自己添寫file type,
                                            我寫的是 *.js 哦,點擊ok
                                     <2>:Default encoding: ----- 這里默認的值不是utf-8,
                                            也是需要自己更改,刪除掉原來的,寫上
                                            你需要的,然后點擊Update ,就好了。

          這里我只嘗試 方法二,所以也寫得比較詳細(呵呵,應該說改的比較詳細,因為是改別的前輩的)。
          有朋友一定喜歡方法一的,可以自己嘗試下。

          posted @ 2007-12-17 16:42 mimi_van 閱讀(5943) | 評論 (19)編輯 收藏


          很多時候,程序都不是像前兩篇寫的那么簡單,<如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(一) >
                                                                                              <如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(二) >
          很多時候,程序都要用到第三方jar文件,比如最常用的,跟MS-SQLSERVER 交互的就需要用到msbase.jar,mssqlserver.jar,msutil.jar這三個驅動。

          在eclipse中,我們都是依靠 右鍵單擊項目,在 Java bulid path 中添加 來完成。
          明明在eclipse中 測試成功的項目,發布成jar包后就是沒法用。 這里的原因就是這些第三方jar文件沒加載進來。如果你在dos控制臺下運行你的jar包,也會看到這樣的提示。

          可是,到底這些第三方jar文件要配置到哪里呢??這個問題也是困惑了我很久的。

          在網路上看到,很多人說,在 環境變量 里的 classpath 里進行配置,配置的時候要寫絕對路徑哦,要加上第三方jar文件的文件名哦。我試了,依然都找不到呢

          還有人說,在dos 下運行的時候 記得要 手動指定,比如: -classpath 或 -cp ,我也試了,還是不行的。

          后來找到一篇很好的文章,解決了我的困惑。<這篇文章我也有轉載到這里,名字是:jar參數運行應用時classpath的設置方法 >

          當用java -jar yourJarExe.jar來運行一個經過打包的應用程序的時,你會發現如何設置-classpath參數應用程序都找不到相應的第三方類,報ClassNotFound錯誤。

          實際上這是由于當使用-jar參數運行的時候,java VM會屏蔽所有的外部classpath,而只以本身(yourJarExe.jar)的內部class作為類的尋找范圍。

          原來如此呢

          解決的辦法可以參看那篇文章,仔細看哦,我看了好幾遍的...(呵呵...沒辦法啊,我很笨的呢)

          另外,還有一個辦法就是網路上經常說的,做個exe文件吧。雖然執行的時候,依然需要 jre的 環境,但至少有一個好處就是,它可以很方便的將 第三方jar文件捆綁進去...

          關于這個exe文件的制作,不瞞大家說,我又是一通有研究,唉.....有時候,我真的很郁悶,為什么別人一看就懂的問題,我卻要花幾倍的時間,我確實是不上道啊...........

          下面我就來說說我自己的親身體會吧。

          我選擇的 exe 封裝 工具是 JSmooth ,這個東東雖然好用,可是有兩個地方還是很讓人惱火的。
          一個就是,最好把你要生成exe的可執行jar文件,和你用到的第三方jar文件,還有圖片(用來設置exe需要的),這幾樣通通放到一個目錄下。
          在一個就是,下面選擇mianfest.mf文件時,必須先選擇 地下的 embedded jar,這個選好了,在mianfest.mf的瀏覽里你才能看到 要選的 main 主文件

          下面看我自己的實踐體驗:

          1,首先你得去下在一個 JSmooth,很多很多的。(放心吧,我都能下載的到,你一定也可以)
               安裝后,在文件夾下,雙擊這個文件 jsmoothgen.exe,看到以下的界面 (我的是 jsmooth-0.9.9-7哦)
               
               

              
            這是個歡迎界面了。

          2.點擊右邊的 Skeleton 如圖:






          Skeleton Selection 我選擇的是 Windowed Wrapper
          Skeleton Properties 選擇 Launch java app in the exe process
          選擇好了后,接著點擊右邊的 Executable

          3. Executable 界面:
              在下面的界面中,Executable Settings 里 有三個選項(鼠標滑動到小問號上,就會有說明德)

                                     <1>. Executable Binary: 寫一下你希望生成的 exe文件名,記得要帶著擴展名的。這里只寫名字即可,不用管路徑。
                                     <2>. Executable Icon: 選擇一副圖片 作為 即將生成的exe文件的 圖標,圖片尺寸好像有規定,不過我自己試了大的圖片,除了有些變形外,還是可以用的。
                                     <3>. Current directory:  這個選項我沒選過,默認空就好了。


           

          4.點擊Application,看到下面的界面:

              這里要強調一點就是:不能先去選擇Main class,你點擊最右邊的Browser,會發現無法選擇的。
              需要先選擇下面的 Embedded jar,----  Browser,---  選中后,在反過來選擇 Main class
              這兩個選擇好了后,在最下面有一個 Classpath 選項,請把你用到的第三方jar文件添加至此處。
              然后基本就可以了

              



          5.其實下面還有一個 JVM Selection ,和 JVM Config,這兩個,如果你是在自己的機器上使用,這兩個基本默認就好,如果你運行 這個exe 的環境和你的機器上的jre版本不同,那就要在設置了,我也正在看這里,因為我今題那就遇到了此問題。會在補充的。

          6.前面設置都ok了,就可以選擇菜單欄里的project 下的 compile,這時候,會跳出一個對話話,問你要保存exe文件要保存到哪里,你選擇一下,其他的不用動。

              這里保存的其實是兩個文件,一個是 exe 文件,一個是 相對應的 同名的xml 文件,在那個xml文件里 有這個exe的信息。

             去你生成exe的路徑下檢查一下吧,應該是可以用的了。

          posted @ 2007-12-11 17:54 mimi_van 閱讀(1496) | 評論 (3)編輯 收藏

          上面那篇文章 《如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(一)》
          講了用My Eclipse 發布jar文件的步驟,這里可以在做一個,這個程序不依賴 dos 的控制臺,所以發布好的jar文件是可以雙擊直接運行的哦。

          比如程序:


          import javax.swing.JOptionPane;


          public class Output {

           /**
            * @param args
            */
           public static void main(String[] args) {
            
            JOptionPane.showMessageDialog(null,"aaaaaa");

           }

          }

          按照前一篇的方法 將 其發布成 jar 文件,然后雙擊該文件,就能夠直接運行,運行效果如圖:



          如果你已經可以 發布這樣的jar包了,那么下面就可以 看下我的 第三篇 ,帶第三方jar文件(比如常用的sqlserver的驅動jar:mssqlserver.jar...)的項目,這樣的項目 打成jar包后,如何運行。

          posted @ 2007-12-11 17:39 mimi_van 閱讀(394) | 評論 (0)編輯 收藏


          關于這個jar文件,我可是費了很多的時間,力氣,和腦細胞,雖然只是這么一個小小的問題,可的確不是讓人很省心的事情。

          網絡上雖然有不少這樣的文章,但當一個新手看的時候,還是會發現 很多情況說的不夠明確,測試也不會成功,這里就先將一個簡單的程序打成jar文件,下面提到的方法都是我親自實踐過的。

          可以看到我的這篇文章的title并沒有起成“如何用My Eclipse 發布 能夠雙擊運行的 jar 文件”,而是寫成了帶 mianfest..mf 的jar文件。

          這是因為 有的jar文件 雖然是包含了 mianfest.mf 的,但是,你雙擊它卻依舊看不到 程序的 運行結果。
          因為這個程序的運行結果需要 依靠 dos窗口。

          比如這樣一段程序:-------該程序在項目test下,test下只有這一個類文件


          public class Output {

           /**
            * @param args
            */
           public static void main(String[] args) {
            
            System.out.println("aaaaaaaa");

           }

          }



          讓我們來試試:

          1.右鍵選中你的項目,選擇 export,選擇JAR file


           
          2.選擇Next ,然后選擇你要打包的項目,畫上小對號就好。然后在底下 JAR file 那里選擇你要 存儲 jar文件的路徑,另外就是自己給你的jar文件起個名字,這里我就存在了D盤下,名字就叫test.jar

            

          3.然后接著點擊 Next,會出現下面的界面,這里默認設置就好,這兩個小對號是說帶著編譯提示的錯誤和警告export。目前我這里每次都是默認的設置



          4.接著點擊Next,這里就要注意選擇 Mianfiest.mf 文件了,點擊下面 Main class 右邊的Browser ,會跳出一個窗口,讓你選擇 你的main類(主程序,就是java文件里有main方法的那個類),我這里的是Output,選中Output,然后點擊小窗口上的OK



          5.選擇完畢后,應該就是這個樣子的:




          6. 點擊 Finish ,結束了哦。

          用My Eclipse 發布jar文件的步驟 到這里就結束了呢。
          *********************************************************************************

          然后就可以在D盤下找到 test.jar 這個文件

          可是你雙擊運行它,并沒有得到什么反應,因為該程序的運行結果是依靠 控制臺的。所以你 從運行--cmd--進入dos下。

          然后到test.jar的目錄下,(這里是d盤下),運行 java -jar test.jar ,就能夠看到程序運行的結果了。


          posted @ 2007-12-11 16:48 mimi_van 閱讀(673) | 評論 (0)編輯 收藏


          1. byte[] b 轉換String str
              
              str   =   new   String(b,   "gb2312");   第二個參數是byte[]的編碼格式

          2. String str 轉換 byte[] b 

              b=str.getBytes( );

              
           

          posted @ 2007-11-28 17:09 mimi_van 閱讀(284) | 評論 (0)編輯 收藏

          我存檔的一篇java資料,里面對 -jar 情況下的classpath 有了比較詳細的闡述。

          當用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包的東西了

           

          關于 什么是 jar文件可以參看以下鏈接:

          http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html

          posted @ 2007-11-28 07:21 mimi_van 閱讀(1127) | 評論 (0)編輯 收藏

          僅列出標題
          共3頁: 上一頁 1 2 3 
          主站蜘蛛池模板: 晋城| 双流县| 武义县| 东阳市| 海阳市| 社旗县| 财经| 平遥县| 宿州市| 天等县| 鄯善县| 藁城市| 双城市| 磐安县| 津市市| 桐柏县| 班戈县| 壶关县| 石柱| 嘉黎县| 弥渡县| 常德市| 新巴尔虎左旗| 东方市| 池州市| 交城县| 泰顺县| 梁平县| 邵东县| 民和| 柳州市| 泰州市| 盐津县| 漳平市| 绵阳市| 镇沅| 台中市| 铁力市| 博兴县| 神木县| 油尖旺区|