java程序如何可以在任何機器上雙擊運行

 

在安裝好了JRE的機器上的任何一個目錄下都可以執行java.exe。因爲它在安裝時被複制到了windows的system32目錄下,而後者無論如何都會在path環境變量中。這個java.exe

    最終必然會訪問註冊表來確定真正的JRE的所在地。如果我們沒有安裝JRE而只是安裝了jdk那麼我們就需要設定環境變量,當環境變量設定好了之後,我們就可以在任意目錄下執行
  javac.exe或java.exe。若我們要求每一個應用程序都自帶JRE,這兩種辦法都不行。但,java.exe會在它的父目錄下查找JRE。

    假設我們的應用程序打好了包,叫做JavaApplication.jar,放在JavaCode的目錄下。我們在JavaCode目錄下,可以執行java -jar JavaApplication.jar來運行我們的程序。

    我們安裝的JRE 在d:/Java/jre1.5.0下。現在,我們只需要將jre1.5.0目錄複製到JavaCode目錄下,改個比較容易寫的名字比如叫jre。現在,JavaCode目錄中有如下的內容:
JavaCode :
         JavaApplication.jar
         Jre:
            Jre1.5.0目錄下的全部內容(不包括Jre1.5.0目錄本身,主要包括其中的bin目錄和lib目錄)

    Java.exe就在jre目錄下的bin目錄中。java.exe會在它的父目錄中查找jre,實驗證實,它會查找lib目錄,而lib就在jre目錄下。因此,這樣java.exe就會確定jre的所在然後正常

    執行java程序,不會去管我們是否安裝了JRE,註冊表中是否有註冊項這些雜事了。

    檢查一下是否使用了JavaCode目錄下的JRE
 
    運行cmd在命令行下進入JavaCode的目錄(假設它在E盤),將path指向JavaCode下的JRE:
 
   set path=e:/JavaCode/jre/bin

   java -verbose -jar JavaApplication.jar

 

   JRE 1.5有70MB作爲私有JRE顯然太大了,但其中好多內容都是可以不要的。Jre目錄下的license都可以不要,bin下的執行文件只需要保留java.exe或者javaw.exe,lib下只要

    保留rt,jsse,jce,charsets幾個庫就可以了。除了i386和zi兩個子目錄外,其餘的子目錄都可以不要。Zi下只需要保留自己地區的子目錄和其下的一些文件就可以。Lib下除了

    庫之外的屬性文件等等都要保留。每次清理調一些不要的內容都要運行幾遍我們的應用程序,以確保我們的JRE不缺少東西。

    如果我們希望能像VC等一樣有的.exe文件可以直接直接啓動我們的應用程序,那麼最簡單的方法是寫一個P處理教本。
  
    在一個.txt文件中比如說Autotun.txt像這樣寫:
            set path=../jre/bin
            java -jar JavaApplication.jar

    這樣在Java程序啓動時,加載的DOS窗口一直出現,直到你關閉了Java程序才一起關閉。如果你想在運行你的程序時避免這個DOS窗口可以這樣寫:
   
            start javaw -jar JavaApplication.jar

    DOS窗口還是會一閃而過,因爲javaw是一個需要dos加載的命令。

    然後這個.txt文件的後綴txt改成bat或cmd。最後將這個腳本Autotun.bat或Autotun.cmd放在JavaCode目錄下即可

 

文章原址:http://www.softhouse.com.cn/news/show/20147.html

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