欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

不使用开发工具将文件或文件夹打包成jar文件

程序员文章站 2022-07-12 19:17:35
...

有些情况下,我们需要把项目打包成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文件

【jar cvfm snake.jar snake\META-INF\MANIFEST.MF -C snake/ .】这句命令中,snake.jar是我要生成的jar文件名,可以任意取,snake\META-INF\MANIFEST.MF就是该文件夹中的MANIFEST.MF文件的路径,-C是指的是你要将哪个文件进行打包,/ .表示该文件夹中的所有文件。
具体使用说明如下:

不使用开发工具将文件或文件夹打包成jar文件

上面我们说的是文件夹打包成jar,那时因为一个项目中存在不是java文件的文件需要打包,所以我们的打包方式需要存在清单文件:MANIFEST.MF。但是如果我要打包的文件全是class文件,比如自己编写的库。那么就用到命令:
jar cvf [打包后的文件名].jar [要打包的文件1].class [要打包的文件2].class [要打包的文件3].class [……更多]

具体如下图:
不使用开发工具将文件或文件夹打包成jar文件