java命令行工具打包

  https://introcs.cs.princeton.edu/java/85application/jar/jar.html

自己写的manifest.mf注意:

https://blog.csdn.net/neareast/article/details/8875342

(1)后缀名必须为.mf

(2)文件内容的最后一行必须为空行(\n)

java -jar -Dfile.encoding=utf-8 xx.jar

 D:\java_oj\ReadFileFromClassPath\target 的目录

2019/09/30  20:45    <DIR>          .
2019/09/30  20:45    <DIR>          ..
2019/09/30  20:55    <DIR>          classes
2019/09/30  20:45    <DIR>          generated-sources
2019/09/30  20:45    <DIR>          maven-archiver
2019/09/30  20:45    <DIR>          maven-status
2019/09/30  20:45             3,509 ReadFileFromClassPath-0.0.1-SNAPSHOT-fat.jar
2019/09/30  20:45             3,310 ReadFileFromClassPath-0.0.1-SNAPSHOT.jar
2019/09/30  20:45    <DIR>          test-classes
               2 个文件          6,819 字节
               7 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath\target>cd ..

D:\java_oj\ReadFileFromClassPath>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath 的目录

2019/09/30  20:45    <DIR>          .
2019/09/30  20:45    <DIR>          ..
2019/09/30  20:26             1,517 .classpath
2019/09/30  20:26               573 .project
2019/09/30  20:26    <DIR>          .settings
2019/09/30  20:35                37 inputFile
2019/09/30  20:45             1,453 pom.xml
2019/09/30  20:26    <DIR>          src
2019/09/30  20:45    <DIR>          target
               4 个文件          3,580 字节
               5 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath>cd target

D:\java_oj\ReadFileFromClassPath\target>cd classes

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  20:55    <DIR>          .
2019/09/30  20:55    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  20:55                 0 manifest
2019/09/30  20:45    <DIR>          testdemo
               2 个文件             37 字节
               3 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest example.jar testdemo.Demo
testdemo.Demo: 没有这个文件或目录

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest example.jar .\testdemo\

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  20:57    <DIR>          .
2019/09/30  20:57    <DIR>          ..
2019/09/30  20:58             1,673 example.jar
2019/09/30  20:45                37 inputFile
2019/09/30  20:55                 0 manifest
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,710 字节
               3 个目录 105,511,235,584 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar example.jar
example.jar中没有主清单属性

D:\java_oj\ReadFileFromClassPath\target\classes>cd ..

D:\java_oj\ReadFileFromClassPath\target>jar cmf .\classes\manifest example.jar .\classes\testdemo\

D:\java_oj\ReadFileFromClassPath\target>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target 的目录

2019/09/30  21:07    <DIR>          .
2019/09/30  21:07    <DIR>          ..
2019/09/30  20:57    <DIR>          classes
2019/09/30  21:07             1,705 example.jar
2019/09/30  20:45    <DIR>          generated-sources
2019/09/30  20:45    <DIR>          maven-archiver
2019/09/30  20:45    <DIR>          maven-status
2019/09/30  20:45             3,509 ReadFileFromClassPath-0.0.1-SNAPSHOT-fat.jar
2019/09/30  20:45             3,310 ReadFileFromClassPath-0.0.1-SNAPSHOT.jar
2019/09/30  20:45    <DIR>          test-classes
               3 个文件          8,524 字节
               7 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target>cd classes

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest.mf result.jar .\testdemo\

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  21:11    <DIR>          .
2019/09/30  21:11    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  21:10                50 manifest.mf
2019/09/30  21:11             1,697 result.jar
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,784 字节
               3 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar result.jar
Exception in thread "main" java.lang.NullPointerException
        at java.io.Reader.<init>(Unknown Source)
        at java.io.InputStreamReader.<init>(Unknown Source)
        at testdemo.Demo.readFile(Demo.java:18)
        at testdemo.Demo.main(Demo.java:25)

D:\java_oj\ReadFileFromClassPath\target\classes>jat tf result.jar
'jat' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\java_oj\ReadFileFromClassPath\target\classes>jar tf result.jar
META-INF/
META-INF/MANIFEST.MF
testdemo/
testdemo/Demo.class

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest.mf result.jar .\testdemo\ .\inputFile

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  21:11    <DIR>          .
2019/09/30  21:11    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  21:10                50 manifest.mf
2019/09/30  21:14             1,846 result.jar
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,933 字节
               3 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>jar tf result.jar
META-INF/
META-INF/MANIFEST.MF
testdemo/
testdemo/Demo.class
inputFile

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar result.jar
helloworld
what's is your name鍚嶅瓧

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar -Dfile.encoding=utf-8 result.jar
helloworld
what's is your name名字

D:\java_oj\ReadFileFromClassPath\target\classes>

猜你喜欢

转载自www.cnblogs.com/CreatorKou/p/11614197.html