jar
jar
如果将java项目编译成一个jar包?如何运行一个jar。本文略做记录。
相关资源
相关知识
关于jar中的META-INF/MANIFEST.MF详解:
参见:https://www.cnblogs.com/jayworld/p/9767228.html
示例1
Manifest-Version: 1.0
Created-By: 1.8.0_241 (Oracle Corporation)
Main-Class: com.java.app.Main
注意点:
1、类似于yml的语法,即冒号后面需要增加空格。
2、好像文件末尾需要空行。
示例2
Manifest-Version: 1.0
Main-Class: addJarPkg #Main-Class为主类名称
Class-Path: lib/java-mysql-connecter.jar #如果需要用到第三方jar包,需要在此注明,多个jar包之间用空格分隔,最后一个jar包后面加两个空格
示例3
Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path: commons-beanutils.jar commons-collections.jar commons-dig
ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
truts-legacy.jar
打包jar包
参见:https://www.cnblogs.com/jayworld/p/9765474.html
方式一:
假设有这样一个目录com/java/app,注意,整个执行命令行操作,没有切换目录。
mkdir -p com/java/app
touch com/java/app/Main.java
# 将下面的内容写入到文件中
cat > com/java/app/Main.java <<EOL
其中,java文件内容为:
package com.java.app;
class Main{
public static void main(String[] args){
for ( int i=0; i < 10; i++) {
System.out.println("hello world" + i);
}
}
}
然后,com的同级目录中(注意,没有切换路径),执行:
javac com/java/app/Main.java
java com/java/app/Main
然后,上述的代码,就能顺利的运行起来。
但是,如果我们想打包为,可运行的jar包呢?
jar -cvf com.jar com
上述打包的jar包,不能运行,会报如下错误:
com.jar中没有主清单属性
那么,修改com.jar为com.jar.zip,再修改jar包里面的META-INF/MANIFEST.MF文件。即增加Main-Class内容:
冒号后面,需要增加一个空格。
Manifest-Version: 1.0
Created-By: 1.8.0_241 (Oracle Corporation)
Main-Class: com.java.app.Main
修改后的文件,再更改为com.jar,再次执行下面的命令,即可。
java -jar com.jar
方式二:
也许上面的步骤有些啰嗦,尤其是增加MANIFEST.MF文件,其实上打包的时候,也可以自己指定:
jar -cvfm com.jar com/META-INF/MANIFEST.MF com
可以将MANIFEST.MF放到pwd路径,然后,更方便:
jar -cvfm com.jar MANIFEST.MF com
如果,不怕晕,执行下面命令,但是注意,下述命令,打包出来的文件结果跟上面文件结构略有区别。:
jar -cvfm com.jar MANIFEST.MF -C com .
现在,了解,jar有点类似tar的命令,命令结果都差不多。
运行jar包
执行下面命令即可。
java -jar com.jar