1. 程式人生 > >Java:如何把java檔案打成Jar包/War包

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即可..