背景:項目中有時候需要導出相關的jar包,可是總是不能分清楚。
1 導出包
導出普通jar包(可作為第三方庫,類似dll,so等)
在eclipse中右鍵選擇except->java->jar file。
導出可運行的jar包(可以雙擊運行,類似exe文件)
在eclipse中右鍵選擇except->java->Runnable jar file。
可運行的jar包是需要jre環境的有兩種方式可以解決這個問題
1.在目標機上安裝jre環境(例如裝jdk),並配置環境變量(一般是path變量值是jre的bin目錄路徑),是否成功,在dos中直接java能識別為止。
2.jre和jar一塊發布,在寫一個bat文件用隨帶的jre運行jar,也可用本地寫一個exe在里面執行dos命令。
3.把jar轉換成exe文件(雖然轉成exe,運行還是需要jre環境的),在jar轉exe時可以指定jre的路徑,我們可以然exe和jre放到一個目錄中一塊交給用戶。工具exe4j(install4j和exe4j是一塊的功能更多),Jsmooth。(教程參見 http://wenzongliang.iteye.com/blog/2144703)
1.1 導出jar包
詳細過程:
(1). 首先在Eclipse中打開項目, 右鍵點擊項目,選擇“Export”;
(2). 選擇Java/JAR file(導出可運行的選擇Java/Runnable 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,搞定。
1.2 兩個jar包之間的區別
普通jar與可運行的jar差別:
創建可執行的JAR包關鍵在於:讓java命令知道JAR包中哪個是主類(有main方法的那個類,開始運行的那個類),javaw命令可以通過該主類來運行程序,這就需要借助清單文件,需要在清單文件中增加如下一行:
Main-Class: accp.ui.Test2
注意這個文件格式要求非常嚴格:
Main-Class:<空格>包名.類名<回車> 注意后面必段有一個回車。
MANIFEST.MF文件:
l 每行只能定義一個key-value對,每行必須頂格寫。
l 每組key-value之間以: (英文冒號后緊跟一個英文空格)。
l 文件開頭不能有空行。
l 文件必須以一行空行結束。
1.3 實驗代碼
做實驗的代碼
public class Week_9{
public static void main(String args[]){
JFrame frame = new JFrame("Java表格") ;
String[] titles = {"姓名","年齡","性別"} ; //表格標題
Object [][] userInfo = {
{"小強",30,"男"} ,
{"小明",23,"女"}
} ; // 初始化數據
JTable table = new JTable(userInfo,titles) ; // 建立表格
JScrollPane scr = new JScrollPane(table) ; //用可滾動的JScrollPanel來包裝JTable
frame.add(scr); //將JScrollPanel添加進窗口中
frame.setSize(400, 200);
frame.setLocation(300, 50);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
