java打包jar
Ⅰ 如何將java源代碼打包生成jar
工具:
eclipse
方法:
1、啟動eclipse;
Ⅱ 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)
Ⅲ 怎樣在cmd中,將java打包為jar包~
在命令行下打包jar使用如下命令:
jar cvf filename.jar foldername
可以使用JAR命令進行打包
下面是jar命令的幫助說明:
用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
選項包括:
-c 創建新的歸檔文件
-t 列出歸檔目錄
-x 解壓縮已歸檔的指定(或所有)文件
-u 更新現有的歸檔文件
-v 在標准輸出中生成詳細輸出
-f 指定歸檔文件名
-m 包含指定清單文件中的清單信息
-e 為捆綁到可執行 jar 文件的獨立應用程序
指定應用程序入口點
-0 僅存儲;不使用任何 ZIP 壓縮
-M 不創建條目的清單文件
-i 為指定的 jar 文件生成索引信息
-C 更改為指定的目錄並包含其中的文件
如果有任何目錄文件,則對其進行遞歸處理。
清單文件名、歸檔文件名和入口點名的指定順序
與 "m"、"f" 和 "e" 標志的指定順序相同。
示例 1:將兩個類文件歸檔到一個名為 classes.jar 的歸檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例 2:使用現有的清單文件 "mymanifest" 並
將 foo/ 目錄中的所有文件歸檔到 "classes.jar" 中:
jar cvfm classes.jar mymanifest -C foo/ .
下文假設編譯後的class文件在bin目錄下
Ⅳ eclipse怎麼將java文件打包成jar
使用Eclipse的Export功能:
一、打包成一般的jar包:
步驟如下:
1)在要打包的項目上右擊,選擇Export
2)在彈出的窗口中,選擇Java -> JAR File,然後點擊next按鈕
3)在JAR File Specification窗口中,設置打包成的文件名和存放位置,點擊兩側next
4)在JAR Manifest Specification窗口中,設置MANIFEST.MF清單文件的配置,
若僅僅打包成單純的jar包的話,不用做任何修改,採取默認即可
若打包成可執行jar包的話,可以使用已存在的MANIFEST文件或者直接選擇Main class
5)點擊Finish按鈕,完成打包。
二、打包成可運行的jar包
步驟如下:
1)在要打包的項目上右擊,選擇Export
2)在彈出的窗口中,選擇Java -> Runnable JAR File,然後點擊next按鈕
3)在Runnable JAR File Specification窗口中,選擇Launch configuration和Export destination
4)點擊Finish按鈕,打包完成。
Ⅳ 怎麼把java文件打包成jar文件
若要生成一個名為 cal.jar 的可執行jar文件:(文件名可以是任意合法名字)
(這是我認為簡單實用的一種方法,還有很多別的方法在此就不介紹了)
第一 把程序生成的所有位元組碼文件(即.class文件)放在同一個目錄下(如:D:/chat/).
第二 在該目錄下新建一個manifest.mf文件,文件內容格式如下(劃線中內容):
manifest.mf文件中的格式:
Main-Class: (空格)calDemo (注意:冒號和類名之間一定要有一個空格)
注意: calDemo代表主類名(即要運行的類名,只能有一個,不要文件擴展名)
Main與Class中間不是下劃線,而是短橫線
Main-Class:與calDemo中間必須要有空格
Main-Class: calDemo之後必須要回車
然後用jar命令生成可執行的jar文件,例如:
(執行該命令前先要轉到該目錄下 D:/chat/ )
jar cvfm cal.jar manifest.mf *.class
jar用法:(僅供參考,初學者可跳過這部分內容)
jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創建新的存檔
-t 列出存檔內容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標准輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用ZIP壓縮格式
-M 不產生所有項的清單(manifest〕文件
-i 為指定的jar文件產生索引信息
-C 改變到指定的目錄,並且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有
文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
jar 運行
java -jar *.jar
Ⅵ 如何將java代碼打包成jar包
方法:
1、啟動eclipse;
2、在eclipse中建立好工程與類並寫好代碼;
3、點擊「File->Export」;
4、在彈擊的界面中選擇「Java->JAR file」,再點擊「Next」;
5、選擇要打包的文件,再點擊「Browse」;
6、在彈出的界面中選擇好打包後的文件的存放路徑,再輸入文件名,最後點擊「保存」;
7、點擊「Finish」;
8、打包成功。
Ⅶ Eclipse如何將Java項目打包成jar包
如果自己的java project中需要引用額外的jar包作為資源文件,那麼需要自定義配置文件MANIFEST.MF ,例如:
Manifest-Version: 1.0
Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jar
Main-Class: src.YourMainClassName
其中的Class-Path就指定了外來jar包的位置。請注意假設我們的項目打包後為project.jar,那麼按照上面的定義,應該在 project.jar的同層目錄下建立一個lib文件夾,並將相關的jar包放在裡面。否則將會出現Exception in thread "main" java.lang.NoClassDefFoundError的錯誤。
如果想在所導出的jar包中包含第三方jar包,可以如下操作:
1.在工程目錄下放入第三方jar包
2.Class-Path: name.jar
上訴兩個步驟就可以成功導出引用了jar包的java工程,並將第三方jar包放在導出的工程中
注意:如果在Class-Path 中引入比較多的jar包,不要寫成一行,不然會報:java.io.IOException : line too long ,需要分多行寫,第二行以及下面的第三行、第四行寫的時候需要在前面空兩格(敲兩下空格鍵)即可
最後介紹一下使用Eclipse製作jar包的過程吧:
1. 首先在Eclipse中打開項目, 右鍵點擊項目,選擇「Export」;
2. 選擇Java/JAR file,Next;
3. Select the resources to export中可以選擇你想要包含的項目文件夾,一些不必要的文件夾就無需放進去了,免得增大空間;
這里有幾個選項:
* Export generated class files and resources 表示只導出生成的.class文件和其他資源文件
* Export all output folders for checked projects 表示導出選中項目的所有文件夾
* Export java source file and resouces 表示導出的jar包中將包含你的源代碼*.java,如果你不想泄漏源代碼,那麼就不要選這項了
* Export refactorings for checked projects 把一些重構的信息文件也包含進去
在Select the export destination中選擇導出的jar的路徑,Next
4. 下一頁可以選擇是否導出那些含有警告warning或者錯誤errors的*.class文件。一般不用理他,Next
5. 下一個頁面里可以對項目做一些配置。
* Generate the manifest file是系統幫我們自動生成MANIFEST.MF文件,如果你的項目沒有引用其他class-path,那可以選擇這一項。
* Use existing mainfest from workspace。這是可以選擇我們自定義的.MF文件,格式如上所寫。
* Seal content。要封裝整個jar或者指定的包packet
* Main class。這里可以選擇你的程序入口,將來打包出來的jar就是你這個入口類的執行結果。
最後Finish 完成
Ⅷ 如何把java程序打包成.jar
打包成一般的jar包的步驟如下:
1.輸入如下命令即可:
Cmd代碼
jar
cvf
counter.jar
-C
bin
.
其中,「-C
bin」實際上是告訴jar命令先cd到bin目錄下,再在此目錄執行沒有參數「-C
bin」的命令,等價於:
2.Cmd代碼
cd
bin
jar
cvf
counter.jar
.
//
"."代表當前路徑
Ⅸ 如何將Java文件打包成jar文件
在java類所處目錄下:
jar cvf aa.jar hello.class
aa.jar是你打成的jar包的名字,hello.class是你的類
如果有多個類的話,可以
jar cvf aa.jar hello1.class hello2.class
還可以使用通配符*代表任何名稱
jar -cvf a.jar *.class
Ⅹ 怎樣將java源代碼打包成可執行jar文件或exe文件
在你的jdk的bin目錄下,有個jar.exe文件,是用來打包的,你運行它會有幫助信息。JCreator的功能較弱,建議你用一個非常好的免費的IDE,叫netbeans,現在版本5.0,用它建一個工程,會給你自動打包成jar文件,eclipse也可以,要稍微配置一下。java一般都是打包成jar文件,可以在安裝了java虛擬機的計算機上跨平台使用。如果你想把它變成一個windows下的exe文件,可以用一些工具,如exe4j,
nativeJ等,可以把你的class文件打包成exe文件,用google搜一下,可以找到這些軟體的下載地址。