減少編譯時間打包jar
『壹』 java應用程序怎樣打包成可jar執行程序
可以把普通的Java程序做成真正的exe,也就是單一個exe就可以在沒有安裝JVM的機器上運行。這樣的工具常見的有JET和gcj.前者是收費的,而且做出來的exe還是需要一堆dll。推薦使用gcj.他有windows和Linux版,直接下載zip包,不需要安裝,裡面有不少例子,一些build的批處理文件。從原理來說gcj自己實現了JVM規范,也就是你編寫一個HelloWorld.java,其中的main方法為System.out.println("foo");
當使用gcj把它做成exe(大約2M),運行這個exe時,會啟動裡面的一個小型jvm,在這上面跑HelloWorld。
其實,把Java做成純exe實在是吃力不討好,有很多限制,文件又大。
我比較傾向另幾種做法:
. 使用InstallAnywhere等工具,製作一個exe的安裝包
用戶可以選擇使用他機器上的JRE或是這個安裝包內的JRE來運行程序
這是很常見的一種做法,如JBuilder就是這么做的。
這樣的好處是不要求對方機器上裝有JRE,而且你原來的程序不需要任何改動。
InstallAnywhere中一個壓縮的JRE大概是8M。
. 製作成可執行的jar,也就是在META-INF的MANIFEST文件制定Main-Class
可以通過命令行java -jar jarfile.jar來執行,windows默認的把*.jar使用javaw -jar打開,所以有些機器上可以直接雙擊jar運行。
. 製作偽exe,其實和上一種做法是一樣的,只不過做成exe,調用系統的java.exe來運行它,這樣的工具有nativeJ,exe4j等
其實Java不像VB,Delphi只是一個語言,而是一個平台。
jar是最常用的部署單元,做成exe沒什麼意思。
一、exe4j。
說明:exe4j可以將Jar文件製作成exe文件,但需jre支持,也可將Jar文件放在外面。
軟體性質:共享軟體
下載地址:http://www.ej-technologies.com/procts/exe4j/overview.html
二、JBuilder。
說明:新版本的JBuilder可以直接把工程製作成各系統的可執行文件,包括Windows系統。
軟體性質:商業軟體
下載地址:略。我是從eMule下載的。
三、NativeJ。
說明:與exe4j功能類似。
軟體性質:共享軟體
下載地址:http://www.dobysoft.com/procts/nativej/download.html
四、Excelsior JET。
說明:可以直接將Java類文件製作成exe文件,除AWT和Swing及第三方圖形介面外可不需jre支持(Java5.0不行)。
軟體性質:共享軟體
下載地址:http://excelsior-usa.com/home.html
五、jshrink。
說明:可將Jar文件打包進exe文件。同時具有混淆功能(這才是它的主要功能)。
軟體性質:共享軟體
下載地址:http://www.e-t.com/jshrink.html
六、InstallAnywhere。
說明:打包工具,對Java打包最好用。可打包成各操作系統運行包。包括Windows系統。
軟體性質:商業軟體。
下載地址:http://www.zerog.com/
七、InstallShieldX。
說明:與InstallAnywhere類似,但比InstallAnywhere功能強大。相對的,比較復雜,不易上手,我現在還沒學會。
軟體性質:商業軟體。
下載地址:http://www.installshield.com/
【Java開源打包工具】
IzPack 是一個 Java 安裝程序製作工具,能夠製作一些簡單的安裝程序。製作出來的安裝程序能在 Unix-like, MacOS X, Windows 等系統平台上運行。
使用JSmooth將做好的JAR包裝成EXE。
launch4j是Java應用程序的Windows本地可執行文件 (.exe) 封裝器。提供了本地彈出屏幕,應用程序圖標,JRE搜索或使用綁定的JRE,啟動失敗反饋,傳遞命令行參數,ant腳本。
VAInstall是多平台的安裝程序。你要包裝起來的軟體可以是可執行的 java class, Windows .EXE, Linux 可執行檔,或者是 UNIX shell 檔案。使用者可以選擇四種安裝的介面,graphic, xtra, text 或是 ansi。VAInstall 只需要很少的空間,他不會使用任何大的暫存檔案,而且還可以很容易使用反安裝功能。
Toolshed是一個既小又簡單的JAVA安裝製作工具。
AntInstaller通過XML文件定義UI,用Ant做後台。所以ANT所能做的事情AntInstaller同樣也勝任。
FreeInstaller能夠把JAVA程序打包成多種平台下的應用程序比如UNIX, LINUX 和 Windows NT.
這個工具利用 ANT 來製作在 Windows, MacOS X, Unix 平台上可執行的文件,比如 exe,zip,jar。ROXES ANT Tasks 基於 GPL 發布。
Mini Installer是用來構建JAVA安裝程序一個簡單類包。整個過程以腳本為驅動,最後結果是一個獨特的JAR文件。用戶可以通過雙擊來執行一個類似向導的安裝過程。
Antigen (Ant Installer Generator)這個工具結合一個ANT構建腳本與一個GUI來把Java文件打包成可執行的Jar文件。它的主要目的是從Ant腳本創造一個強大的圖形安裝工具。
Packlet是一個針對Java的簡單安裝工具。一個Packlet類似於一個zip或tgz文件。它把應用程序打包成一個單一的可分解的壓縮文件。Packlet文件能夠在任何有安裝Java 2運行環境的機器上運行。
Java Service Wrapper可以把Java應用程序安裝成一個Windows NT服務或Unix Daemon.它同時還為應用程序提供日記功能,靈活的配置,可靠的運行性能,按需求重新啟動,簡化應用程序的安裝等,>
JPackIt可以把Java工程打包成一個可執行的包(如:jar,class或exe).包括所有Java應用程序資源如:代碼,圖片,屬性文件和被引用的第三方包.>
One-JAR可以解決如何把一個依賴於多個其它jar文件的應用程序發布成一個單一的可執行Jar文件.它使用一個可定製的類裝載器(classloader)來打開在主Jar中的Jar文件包. >
Autojar幫助從不同的inputs(如:自身classes,外部文檔等)製作最小的Jar文件。它從一個或多個給定的classes開始,依據位元組碼(bytecode)遞歸搜索相關聯的classes,然後從input文檔中提取這些Classes,並把它們拷貝到output中. 最終的文檔將只包含真正需要的classes. 因而能夠保持applet的大小並降低applet的載入時間或者讓應用程序獨立於第三方類庫。>
MJAR(Managed Jar Framework)Java軟體分發/打包框架。它允許在相同VM內並行部署classloader分離的應用程序。MJAR使用Spring框架來管理內部組件。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lesorb/archive/2009/02/18/3905439.aspx
『貳』 IDEA打包jar程序
打包jar一共有兩種方式
第一種:
快捷鍵(Ctrl+Alt+Shift+S)打開項目的Project Structure。在Artifacts創建
接著,指定main class,如下:
最後,得到創建得到的artifacts
註:這里可以通過「+」或者「-」選擇那些需要打入artifacts的第三方jar文件,也可以將maven中的包都導入進來;
在菜單欄目選Build,最後一欄Build Artifacts
最後,在出現的窗口創建
得到打包結果:
去執行
一般會執行成功如果執行出錯查看是什麼錯誤排查即可;
maven打包的步驟:
[圖片上傳中...(image-784a61-1649340624814-14)]
maven 默認打包插件,用來創建 project jar
pom.xml配置如下:
2.1 maven-jar-plugins 無依賴第三方jar的打包
maven 默認打包插件,用來創建 project jar
pom.xml配置如下:
運行:在target中找到打包出來的xxx.jar包,運行java -jar xxx.jar即可,但是如果程序有依賴其他包,比如程序依賴jdbc去查詢db,這時候再執行就會出現找不到jdbc依賴,因為我們並沒有將依賴包打進去。
支持定製化打包方式,更多是對項目目錄的重新組裝。以下方式用的比較少,因為我們依賴的jar,也會打進到我們最終生成的jar中,會導致一個jar文件過大,而且如果要給第三方使用,最好給一個純凈的。
pom.xml配置如下:
支持定製化打包方式,更多是對項目目錄的重新組裝。在2.2基礎上,我們還可以利用assembly,將我們依賴的jar歸類,打包成一個zip。發布項目的時候,將zip包到伺服器上,直接unzip xxx.zip,裡麵包含要運行的jar以及依賴的lib,還有配置的config文件,還可以包括執行腳本,可以直接啟動服務。
maven-assembly-plugin還需要配置一個assembly.xml文件,用於過濾不必要的第三方jar包文件,或者確定自己編譯的項目文件路徑、項目的啟動腳本文件目錄,打包的類型格式zip或者tar.gz等。
assembly.xml文件內容為:
打包結果為:
用來打可執行包,包含依賴,以及對依賴進行取捨過濾。使用這種方式打出來的是揉合在一起,成為一個jar文件。這種打包方式的優點是可以利用transformer把第三方jar相同的配置文件組合成一個文件,如reference.conf文件等等。
pom.xml配置如下:
打包結果:
該插件主要用於項目maven編譯打包時,跳過單元測試,pom.xml配置為:
文獻:
IntelliJ IDEA自身以及maven項目打包方式(單模塊) - 牧夢者 - 博客園 (cnblogs.com)
『叄』 如何將編譯後的文件打包成jar文件
1.win+r進入命令行;
2.找到需要打包的class文件;
3.jar -cvf [jar包的名字] [需要打包的文件]例如:jar -cvf shafei.jar com將com包中的文件打包成shafei.jar文件;
『肆』 求Java程序打包成可執行jar的工具或者方法
總體思路是先打成jar再把jar打成exe。主要看1.3和2.3里的內容就可以了。
1.將項目打成jar:
1.1要將項目打包成jar文件,方法很多,可以用Eclipse自帶的打包工具Ant打包,也可以用Eclipse的Export生成jar。經過嘗試後,我不推薦用Ant打包,因為要自己編寫xml腳本語言,還要增加一些外部的jar,所以我打了好幾次都沒打成。
1.2在這里介紹兩種方法生成jar,第一種是用Eclpise的Export功能。在要打包的項目上擊右鍵,選擇Export,在窗口中選擇Java里的JAR file。Next後的窗口中已經自動選好了要打包的項目,用戶可以點擊加號查看項目里被打包的內容。在下面的JAR file里設置你打包生成jar文件的輸出目錄,下一步在出現的窗口中選擇Use existing manifest from workspace,在下面的Main class後面直接點Browse,它會自動列出你項目中有主函數main的類。選擇主類後點Finish即可生成jar文件。在此說明一下,這種打包方法不能把項目中的外部的jar包打進來,因該是也要編寫一些腳本語言,沒往深研究。所以生成後的jar有些是不能執行的。
1.3第二種方法是利用Eclipse的一個第三方插件fatjar生成jar文件,也是本人覺得最簡單最方便的一種生成方式。先從網上下載些插件,解壓後是一個plugins的文件夾,裡面只有一個文件夾,我的「net.sf.fjep.fatjar_0.0.24」將它到Eclipser plugins文件夾下,此插件就安裝成功了,重啟Eclipse在項目上右擊就會看到多出一個「Build Fat Jar」在前面有個綠色的「+」號,這時你就可以用此插件打包你的項目了。進去後第一個界面Jar-Name里增入要生成的jar文件名,我的是「CAMP_fat.jar」。在Main-Class後點Browse像Export一樣它也會列出你項目中的主類,選擇後其它默認即可,Next後會列出你要打包的所有內容,這個插件的優勢就是可以將你項目中的外部jar也打進來,有三個先項,其中Export ANT是生成build.xml腳本文件,方便用戶以後修改腳本,其它兩個按鈕沒用。在這里什麼都不點,直接點Finish就可以生成jar文件。
2.將jar打成.exe文件:
2.1 雖然此時的jar文件已經可以執行了。生成.exe的文件我也是用兩種方法實現的,用到的打包工具是j2ewiz和exe4j,它們的不同會在我下面的介紹中體現出來。
2.2 首先是j2ewiz,這個軟體是綠色的,不用安裝,解壓後可以直接運行,但這個軟體生成的 .exe文件不是跨平台的。運行此程序首先就是輸入要打包的jar文件,我們瀏覽JAR選擇我們之前用fatjar生成的「CAMP_fat.jar」項目文件(詳見1.3),下面那個選項是提示用戶最低要求的JRE版本,一般選1.3。下一步,因為我們的寢室管理系統是圖形界面,所以在這里選「Windows窗口程序」下一步它也是自動生成要執行的主類,你只要選擇就可以。下面的選框可以選擇你啟動程序顯示的圖片。下一步後這個窗可按個人喜好選擇。下一步,如果你的程序還有什麼依賴的外部jar文件,可以從這里加上,但因為之前的fatjar以經將我們項目所用的那三個連資料庫的外部類打進CAMP_fat.jar包里了,所以這里不用再添加。如果你之前是用Export打的jar包,那麼這里就需要再把那個三個資料庫的包加進來了(詳見1.2)。下一步是添入要生成的.exe文件名,再選一個程序圖標就可以了,下一步後生成.exe文件,點完成。雙擊生成的.exe文件就能看到運行效果了,這種exe文件還沒有脫離JDK環境,還不能跨平台使用,只能用於小組成員測試使用。
2.3 =下面進入最關鍵的,如何打包跨平台的.exe文件。用到的軟體是exe4j,我用的是V4.0版的,此軟體需要破解。安裝後運行左窗窗口標有十步,其實打包過程也非常簡單。第一步完全略過,直接點Next第二步我們選擇「JAR
in EXE mode」 就是選擇我們已經有製作好的jar文件。第3步上面是項目名稱,可隨便填寫,下面一個寫出你想要將打包後的exe文件輸出的目錄我的是「桌面\project\」。第4步,由於我的演示程序是圖形的,所以選第一個,如果你的程序是控制台的,則選擇第二個,Executable name寫你將要生成的.exe文件的名字,Icon File可以選擇生成文件的圖標。第5步,先別管上面的,先在下面單擊綠色的「+」號,在彈出的窗口中點Archive,然後找到起初已經做好的CAMP_fat.jar(詳見1.3)文件,"OK"後返回,在下面的Class Path里就出現jar文件路徑後,再在上面Main Class欄內點擊找到main所在的類。第6步,你系統的JRE版本,一般是填個1.3,下面填1.6在這里單擊advanced options,選擇search sequence。選這個就是因為我們要把JDK環境也打包進來,好讓程序能跨平台使用。首先要從你系統的JDK下的JRE目錄到你.exe文件的輸出目錄下「桌面\project\JRE」,然後回到exe4j中在彈出窗口刪除列表中的所有項。我的是三項,一個注冊表的,一個JAVA環境變數的,一個JDK環境變數的,都不要。然後單擊綠「+」,選擇directory並選擇JRE的根目錄,我的是「桌面\project\JRE」就是後的目錄,選完後exe4j彈出窗口中的Directory里會顯示「.\JRE」。點OK關閉該窗口,返回exe4j的主窗口,你就可以看到剛加的路徑。再從主窗口左側窗口中單擊advanced options,並選擇preferred VM,在彈出的窗口中選擇client hostspot VM,單擊next按鈕繼續。7、8步是一些個性設置默認即可。第9步編譯完後第10步你點那個「Click Here to Start the Application」按鈕就可以看到程序運行效果了,然後再點」Seave as」保存一個exe4j生成的一個文件,隨便存哪裡都行,和我們的.exe程序無關。全部製作過程就完工了。
『伍』 使用MyEclipse編譯出來的java文件怎樣打包.jar文件為可執行文件求詳細步驟,包括過程中的選項
(不知道你用的是那個版本的,我這里以8.0英文版做介紹。不同的版本操作大體相同)1.在你要導出的項目上單擊右鍵,在彈出的右鍵菜單里選擇:Export…選項。2.在彈出的對話框里選擇:,然後點擊下邊的Next;3.在彈出的對話框里,點擊選擇導出後的jar存儲路徑以及文件名。(其他參數一般不用修改),點擊Next;4.彈出對話框Jar Packaging Options,保持默認即可,點擊Next;5.彈出對話框Jar Manifest Specification,,點擊Browse…,在彈出窗口中選擇你項目中包含main方法的類,然後點OK,選擇完畢後,點擊Finish。會彈出編譯結果的對話框,沒重大錯誤的話,直接點擊OK即可導出可執行的jar文件到你剛才選定的路徑。(這一步是最重要的,如果包含main方法的類選擇錯誤,將導致程序無法運行。) 希望能幫到你。
『陸』 JAVA打包jar文件的方法,高分相求
^^java教程^^《製作可執行JAR》本文闡述了如何把一個不可執行的JAVAArchive(JAR)文件變成可執行,而不用直接操作manifest文件。你會學到寫出短小的一個程序,通過運行java-jar命令或在像windows一樣的操作系統裡面用雙擊滑鼠運行任何JAR文件。
你可以很容易地把應用程序的一整套class文件和資源文件打包到一個JAR中。事實上這就是jar文件存在的一個目的。另外一個目的就是讓用戶能很容易地執行被打包到jar文件裡面的應用程序。那麼為什麼jar文件僅僅作為文件在整個java裡面占據了次要的地位,而本地執行則被忽視?
要執行一個jar文件,你可以使用java命令的-jar選項。舉一個例子來說,假如你有個名叫myjar.jar的文件。這個jar是可以運行的,你可以運行它:java-jarmyjar.jar.另外一個辦法就是,當JavaRuntimeEnvironment(JRE)已經被安裝到一個像windows的操作系統上,將jar文件與JVM關聯(關聯java.exe跟jar文件)在一起你就可以通過雙擊jar來運行這個應用程序。當然,jar文件必須是可執行的。
現在的問題是:如何做一個可以執行的jar?
manifest文件以及Main-class入口
在大多數jar中,都在一個叫META-INF的目錄裡面保存了一個叫MANIFEST.MF的文件。那個文件裡面,
包含了一個特殊表項名字叫Main-Class,告訴java-jar命令應該執行哪個class.
問題是你必須為manifest文件手工加入適當表項,而且必須在一定的位置和用一定的格式。不幸的是,不是每個人都喜歡打開寫字板編輯配置文件。
讓API幫你完成任務
自從java1.2發布以來,一個叫java.uil.jar包的出現,讓你能夠方便處理jar文件。(注意:該包基於java.util.zip)特別地,jar包讓你通過Mainfest類,可以容易操作那些manifest文件.
就讓我們用這個API寫一個程序吧。首先,這個程序必須知道三樣東西:
1。我們要使之可運行的jar文件。
2。運行jar的主類(這個類必須包含在jar中)。
3。輸出新jar文件的文件名,因為我們不能簡單地覆蓋原來的文件。
編寫程序
上面列表的三點要求將組成我們的程序的參數。現在,讓我們為這個程序選擇一個適當的名字。
MakeJarRunnable聽起來覺得怎樣?
為main方法檢查參數
假設我們的main方法入口點是一個標準的main(String[])方法。我們應該這樣檢查程序的參數:
if(args.length!=3){
System.out.println("Usage:MakeJarRunnable" "<jarfile><Main-Class><output>");
System.exit(0);
}
請注意參數列表是如何描述的,因為這在以下代碼中是很重要的。參數的次序和內容不是固定的;
然而,如果你要改變他們的話,要記住響應修改其他代碼。
訪問jar和jar的manifest文件
第一,我們必須創建一些了解jar和manifest的對象:
//CreatetheJarInputStreamobject,andgetitsmanifest
JarInputStreamjarIn=newJarInputStream(newFileInputStream(args[0]));
Manifestmanifest=jarIn.getManifest();
if(manifest==null){
//
manifest=newManifest();
}
設置Main-Class屬性
我們把Main-Class入口放到manifest文件的main屬性部分。一旦從manifest對象獲得這個屬性,就可以設置需要的mainclass。然而,如果main-Class屬性已經存在原來的jar當中又如何呢?這里我們只是簡單地輸出一個警告然後退出。我們能加入一個命令行參數告訴程序使用新的值,而代替了舊的那個:
Attributesa=manifest.getMainAttributes();
StringoldMainClass=a.putValue("Main-Class",args[1]);
//Ifanoldvalueexists,telltheuserandexit
if(oldMainClass!=null){
System.out.println("Warning:oldMain-Classvalueis:"
oldMainClass);
System.exit(1);
}
輸出新的JAR
我們需要創建一個新的JAR文件,所以我們必須使用JarOutputStream類。注意:
我們必須確定我們不用跟輸入文件相同的名字作為輸出文件的名字。還有一個方案就是,程序應該考慮到一種情況,就是兩個jar文件都是相同的,促使用戶覆蓋原來的文件,如果他願意這么做的話。然而,我在保留了這一點,作為讀者的一個練習。從如下代碼開始:
System.out.println("Writingto" args[2] "...");
JarOutputStreamjarOut=newJarOutputStream(newFileOutputStream(args[2]),manifest);
我們必須從輸入JAR寫每個表項到輸出的JAR,所以迭代每個表項:
//
byte[]buf=newbyte[4096];
//Iteratetheentries
JarEntryentry;
while((entry=jarIn.getNextJarEntry())!=null){
//
if("META-INF/MANIFEST.MF".equals(entry.getName()))continue;
//WritetheentrytotheoutputJAR
jarOut.putNextEntry(entry);
intread;
while((read=jarIn.read(buf))!=-1){
jarOut.write(buf,0,read);
}
jarOut.closeEntry();
}
//Flushandcloseallthestreams
jarOut.flush();
jarOut.close();
jarIn.close();
完成程序
當然,我們必須把這些代碼放到一個類的main方法裡面,並且需要一大堆import代碼。完整程序:
http://www.javaworld.com/javaworld/javatips/javatip127/MakeJarRunnable.zip
程序使用例子
讓我們把這個程序應用到一個例子裡面來。假設你有一個應用程序,該程序的入口點是一個叫HelloRunnableWorld的類,再假設你已經創建了一個jar叫myjar.jar,包含了整個程序。運行MakeJarRunnable:
javaMakeJarRunnablemyjar.jarHelloRunnableWorldmyjar_r.jar
正如前面提到的,注意一下我的參數順序。如果你忘記了順序,沒有參數運行一下程序,它會響應出現一個用法提示信息。
嘗試對myjar.jar運行java-jar命令。然後對myjar_r.jar。注意區別不同!好了,你完成了這一切了,瀏覽一下每個jar的manifest文件(META-INF/MANIFEST.MF)
『柒』 java 怎麼把多個jar打包成一個jar來使用
Java程序由多個類文件組成,這些類文件需要編譯成多個「.class」二進制位元組碼文件才能運行,而一個稍大寫的Java程序,編譯後都會有非常多的「.class」文件,這樣對於程序的發布非常的不方便。下面將介紹如何將Java程序的多個編譯後的「.class」文件打包成一個可執行的JAR文件,這樣將該JAR文件發布給用戶就可以了。
1. Java程序打包成JAR文件
(1)在Eclipse的「包資源管理器」視圖中找到要打包成JAR文件的項目。在項目名稱上單擊滑鼠右鍵,在彈出的菜單中選擇「導出」菜單項。在「導出」對話框中選擇「Java」/「可運行的JAR文件」。
(2)在「可運行的JAR文件導出」向導對話框的「啟動配置」下拉選擇框中,選擇「StudyJava-2.01」。這個下拉選擇看中保存著運行過的啟動配置,由於之前已經運行過StudyJava類,所以這個下拉選擇框中可
以選擇StudyJava類的啟動配置。選項的「-2.01」後綴是啟動配置所在的項目名稱。然後在「導出目標」下拉選擇框中輸入保存打包後JAR文件的名稱和位置,也可以通過單擊右側的「瀏覽按鈕」選擇指定的位置。
2. 在命令行運行JAR文件
現在的實例是在控制台中輸出字元串信息。把它打包成JAR文件之後必須通過命令行方式運行,這樣才可以在命令行中看到程序的輸出結果。下面介紹一下具體運行方法。
(1)在windows系統中,單擊「開始」/「運行」菜單項。
(2)在彈出的「運行」對話框中輸入「CMD」命令。單擊「確定」按鈕。
(3)在CMD命令中,默認的操作位置是當前用戶文件夾,由於打包的「StudyJava.jar」文件保存在C盤根目錄,所以我們輸入「cd\」命令,把操作文件夾切換到C盤根目錄。然後輸入「java –jar StudyJava.jar」命令運行JAR文件。如下圖所示。其中「java」是運行Java程序的命令,「-jar」是運行參數,意思是要運行JAR文件,而後面跟隨的就是JAR文件的全程(包括擴展名稱)。
