不使用開發工具將文件或文件夾打包成jar文件

有些情況下,我們需要把項目打包成jar文件,我們可以通過eclipse來打包也可以自己手動打包。
手動打包可以給任何文件夾打包,但是打包的文件夾中必須存在MANIFEST.MF文件,一般是在文件夾中有一個META-INF文件夾,在該文件夾中放MANIFEST.MF文件。該文件是打jar包必須有的文件。該文件內容簡單的可以如下:

Manifest-Version: 1.0
Main-Class: snake.demo.SnakeGame

就是Manifest版本和該項目中包含main方法的主類的全限定性類名,有的時候還可以寫要導入的包的路徑,如果有多個包,那麼包與包之間以空格隔開,例如:Class-Path: lib\mysql-connector-java-5.1.26-bin.jar lib\jna-4.1.0.jar

也可以是很複雜的,比如下面的:

Manifest-Version: 1.0
Export-Package: com.genuitec.eclipse.core,com.genuitec.eclipse.core.gs
 dc,com.genuitec.eclipse.core.ui.action,com.genuitec.eclipse.core.ui.p
 reference,com.genuitec.eclipse.core.ui.wizard
Bundle-ClassPath: .
Bundle-Name: %pluginName
Bundle-Localization: plugin
Bundle-NativeCode: /lib/storage32.dll; osname=Win32; processor=x86, *
Require-Bundle: org.eclipse.core.runtime.compatibility;visibility:=ree
 xport,org.eclipse.ui.forms,com.genuitec.eclipse.core.common.platform;
 visibility:=reexport,com.genuitec.eclipse.jniwrapper,org.apache.commo
 ns.codec;bundle-version="1.3.0";visibility:=reexport,org.eclipse.jsch
 .core;bundle-version="1.1.200",com.jcraft.jsch;bundle-version="0.1.41
 ",org.eclipse.core.net;bundle-version="1.2.100"
Plugin-Class: com.genuitec.eclipse.core.ViperCore
Bundle-Vendor: %providerName
Eclipse-LazyStart: true
Bundle-Version: 12.0.0.me201311281640
Bundle-ManifestVersion: 2
Bundle-Activator: org.eclipse.core.internal.compatibility.PluginActiva
 tor
Bundle-SymbolicName: com.genuitec.eclipse.core; singleton:=true

Name: com/genuitec/eclipse/core/gsdc/SecureActivationReader$A.class
SHA1-Digest: AubAaQkurer2+un11/VozYKupS4=

Name: com/genuitec/eclipse/core/activation/SystemId$InvalidLicenseData
 Exception.class
SHA1-Digest: 8ZeejHRhPE/wHc2YiMOQA5qva88=

我們先不去管內容的意義,如果要打包的文件夾中以及有MANIFEST.MF就可以進行打包,如果沒有,你可以創建META-INF文件夾並在裏面創建MANIFEST.MF文件。

我要打包的文件夾是一個交snake的項目
我們在要打包的文件夾所在的目錄下 執行命令,所以要把路徑切換到文件所在盤符,然後輸入命令:jar cvfm snake.jar snake\META-INF\MANIFEST.MF -C snake/ .
注意最後的/ 和點,斜槓和點之間有一個空格。
這裏寫圖片描述

【jar cvfm snake.jar snake\META-INF\MANIFEST.MF -C snake/ .】這句命令中,snake.jar是我要生成的jar文件名,可以任意取,snake\META-INF\MANIFEST.MF就是該文件夾中的MANIFEST.MF文件的路徑,-C是指的是你要將哪個文件進行打包,/ .表示該文件夾中的所有文件。
具體使用說明如下:

這裏寫圖片描述

上面我們說的是文件夾打包成jar,那時因爲一個項目中存在不是java文件的文件需要打包,所以我們的打包方式需要存在清單文件:MANIFEST.MF。但是如果我要打包的文件全是class文件,比如自己編寫的庫。那麼就用到命令:
jar cvf [打包後的文件名].jar [要打包的文件1].class [要打包的文件2].class [要打包的文件3].class [……更多]

具體如下圖:
這裏寫圖片描述

發佈了37 篇原創文章 · 獲贊 22 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章