https://introcs.cs.princeton.edu/java/85application/jar/jar.html
自己写的manifest.mf注意:
https://blog.csdn.net/neareast/article/details/8875342
(1)后缀名必须为.mf
(2)文件内容的最后一行必须为空行( )
java -jar -Dfile.encoding=utf-8 xx.jar
D:java_ojReadFileFromClassPath arget 的目录 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_ojReadFileFromClassPath arget>cd .. D:java_ojReadFileFromClassPath>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath 的目录 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_ojReadFileFromClassPath>cd target D:java_ojReadFileFromClassPath arget>cd classes D:java_ojReadFileFromClassPath argetclasses>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath argetclasses 的目录 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_ojReadFileFromClassPath argetclasses>jar cmf manifest example.jar testdemo.Demo testdemo.Demo: 没有这个文件或目录 D:java_ojReadFileFromClassPath argetclasses>jar cmf manifest example.jar . estdemo D:java_ojReadFileFromClassPath argetclasses>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath argetclasses 的目录 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_ojReadFileFromClassPath argetclasses>java -jar example.jar example.jar中没有主清单属性 D:java_ojReadFileFromClassPath argetclasses>cd .. D:java_ojReadFileFromClassPath arget>jar cmf .classesmanifest example.jar .classes estdemo D:java_ojReadFileFromClassPath arget>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath arget 的目录 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_ojReadFileFromClassPath arget>cd classes D:java_ojReadFileFromClassPath argetclasses>jar cmf manifest.mf result.jar . estdemo D:java_ojReadFileFromClassPath argetclasses>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath argetclasses 的目录 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_ojReadFileFromClassPath argetclasses>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_ojReadFileFromClassPath argetclasses>jat tf result.jar 'jat' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 D:java_ojReadFileFromClassPath argetclasses>jar tf result.jar META-INF/ META-INF/MANIFEST.MF testdemo/ testdemo/Demo.class D:java_ojReadFileFromClassPath argetclasses>jar cmf manifest.mf result.jar . estdemo .inputFile D:java_ojReadFileFromClassPath argetclasses>dir 驱动器 D 中的卷是 软件 卷的序列号是 6BDF-6A2D D:java_ojReadFileFromClassPath argetclasses 的目录 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_ojReadFileFromClassPath argetclasses>jar tf result.jar META-INF/ META-INF/MANIFEST.MF testdemo/ testdemo/Demo.class inputFile D:java_ojReadFileFromClassPath argetclasses>java -jar result.jar helloworld what's is your name鍚嶅瓧 D:java_ojReadFileFromClassPath argetclasses>java -jar -Dfile.encoding=utf-8 result.jar helloworld what's is your name名字 D:java_ojReadFileFromClassPath argetclasses>