Java:如何把java檔案打成Jar包/War包
一、匯出jar包
右擊專案,選擇Export
在Export視窗,選擇java-->JAR file,點選"Next"按鈕
在JAR Export視窗,選擇我們要匯出的包,點選"Browe..."按鈕,選擇一個匯出jJAR包的路徑。點選"Finish"完成
這樣就會在我們選擇的路徑下生成一個我們想要的jar包,你就可以讓別人使用你開發好的功能了。
二、測試jar包
輸入如下命令:java -jar jar檔案的名字,就可成功執行jar包
三、問題解決
java執行jar命令提示沒有主清單屬性。
這樣的問題是因為,jar包中的META-INF資料夾下的MANIFEST.MF檔案缺少定義jar介面類。說白了就是沒有指定class類。這裡說明一下MANIFEST.MF就是一個清單檔案,通俗點將就相當於WINDOWS中ini配置檔案。用來配置程式的一些資訊。所以才造成這樣的問題。該檔案的“Main-Class”屬性指定了程式的主類,“Class-Path”屬性則指定了執行主類所依賴的外部類的路徑。將類路徑配置在清單檔案中的好處是,執行jar包時可以省去一長串的classpath引數。
解決這個問題的方法就是要在MANIFEST.MF檔案中新增一個入口類。即需要一個Main-Class定義行。
所以,解決辦法很簡單。就是在MANIFEST.MF新增入口。
雙擊開啟jar檔案,你的電腦需要安裝有winrar。或者其他壓縮工具。
之後,在雙擊開啟這個資料夾META-INF,雙擊開啟jar檔案,你的電腦需要安裝有winrar。或者其他壓縮工具。
現在看看檔案中是否有Main-Class這樣一行文字,如果沒有的話那麼新增一行。
Main-Class: gui
這裡的gui是你的xxx.java檔案編譯後的xxx.class檔案稍微名稱。但是不要加.class字尾。如果有的話,那麼看下Main-Class: gui 這後面的名稱是否和你的class檔名稱一致。不一致請改回來。 注:這裡Main-Class:要空一格寫上你的class檔名。
注意:Web專案打包成war包
報錯:專案正常執行,但是war包執行報錯:
原因:嚴重: Exception sending context initialized event to listener instance of class com.demo.web.listener.InitApplicationListener java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
MyEclipse中自帶的JDK為1.6,spring包為3.1.2。
系統的JDK為1.8,與spring3不相容,升級為spring4則成功執行。
最好統一設定為Spring4,以方便遷移,如果有需要,設定tomcat的預設jdk:
(1) windows下:
修改 tomcat/bin/setclasspath.bat
在rem Otherwise either JRE or JDK are fine之前加上
set JAVA_HOME = C:\.... jdk路徑
set JRE_HOME = C:\....\jre Jre路徑
(2) linux環境下
修改tomcat/bin/setclasspath.sh
在# First clear out the user classpath
CLASSPATH=
下面新增上
export JAVA_HOME=/home/tool/jdk1.6.0_18 --jdk路徑
export JRE_HOME=/home/tool/jdk1.6.0_18/jre --jre路徑
儲存,重新啟動tomcat即可..