https://introcs.cs.princeton.edu/java/85application/jar/jar.html
Write your own manifest.mf Note:
https://blog.csdn.net/neareast/article/details/8875342
(1) extension must be .mf
(2) The last line of the file content must be a blank line (\ 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 bytes 7 directory 105,511,239,680 bytes available D: \ java_oj \ ReadFileFromClassPath \ target > CD .. D: \ java_oj \ ReadFileFromClassPath > the dir drive D volume is software Volume Serial Number is 6BDF - 6A2D D: \ java_oj \ directory ReadFileFromClassPath 20:45 2019/09/30 <the DIR> . 2019/09/30 20:45 <the DIR> .. 2019/09/30 20:26 1,517 the .classpath 2019/09/30 20:26 573 .project 2019/09 / 30 20:26 <the DIR> .settings 2019/09/30 20:35 37 [ inputFile 2019/09/30 20:45 1,453 the pom.xml 20:26 2019/09/30 <the DIR> the src 2019/09/30 20:45 <the DIR> target . 4 files of 3,580 bytes 5 catalog 105,511,239,680 bytes available D: \ java_oj \ ReadFileFromClassPath > CD target D: \ java_oj \ ReadFileFromClassPath \ target > CD classes D: \ java_oj \ ReadFileFromClassPath \ target \ classes > the dir drive D volume is software volume serial number is 6BDF - 6A2D D: \ java_oj \ ReadFileFromClassPath \ target \ classes directory 2019/09 / 20:55 30 <the DIR> . 2019/09/30 20:55 <the DIR> .. 2019/09/30 20:45 37 [inputFile 2019/09/30 20:55 0 the manifest 2019/09/30 20:45 <the DIR> testdemo 2 files 37 bytes three directories 105,511,239,680 bytes available D: \ java_oj \ ReadFileFromClassPath \ target \ classes > JAR the manifest CMF testdemo.Demo example.jar testdemo.Demo: no such file or directory D: \ java_oj \ ReadFileFromClassPath \ target \ classes > JAR CMF the manifest example.jar \ testdemo \. D: \ java_oj \ ReadFileFromClassPath \ target \ classes > dir drive D the volume is a software volume serial number is 6BDF - 6A2D D: \ java_oj \ ReadFileFromClassPath \ target \ classes directory 20:57 2019/09/30 <the DIR> . 2019/09/30 20:57 <the DIR> .. 2019/09/30 20:58 1,673 example.jar 2019/09/30 20:45 37 [ inputFile 2019/09 / 30 20:55 0 the manifest 2019/09/30 20:45 <the DIR> testdemo three files of 1,710 bytes three directories 105,511,235,584 bytes available D: \ java_oj \ ReadFileFromClassPath \ target \ classes > Java - JAR example.jar Example .jar no master list of attributes D: \ java_oj \ ReadFileFromClassPath \ target \ classes > cd .. D: \ java_oj \ ReadFileFromClassPath \ target >.. JAR CMF \ classes \ example.jar the manifest \ classes \ testdemo \ D: \ java_oj \ ReadFileFromClassPath \ target > the dir drive D volume is software Volume Serial Number is 6BDF - 6A2D D: \ java_oj \ ReadFileFromClassPath \ target of directory 2019/09/30 21:07 <the DIR> . 2019/09/30 21:07 <the DIR> .. 2019/09/30 20:57 <the DIR> classes 2019/09/30 21:07 1,705 example.jar 20:45 2019/09/30 <the DIR> generated- Sources 2019/09/30 20:45 <the DIR> maven- Archiver 2019/09/30 20:45 <the DIR> maven- Status 20:45 3,509 ReadFileFromClassPath-0.0.1 2019/09/30-SNAPSHOT- fat.jar 2019/09/30 20:45 3,310 ReadFileFromClassPath-0.0.1- SNAPSHOT.jar 2019/09/30 20:45 <the DIR> Test - classes . 3 files 8,524 bytes 7 catalog 105,511,231,488 bytes available D: \ java_oj \ ReadFileFromClassPath \ target > CD classes D: \ java_oj \ ReadFileFromClassPath \ target \ classes > . CMF JAR MANIFEST.MF result.jar \ testdemo \ D : \ java_oj \ ReadFileFromClassPath \ target \ classes > the dir drive D volume is software volume serial number is 6BDF - 6A2D D: \ java_oj \ ReadFileFromClassPath \ target \ classes directory 2019/09/30 21:11 <the DIR> . 2019/09/30 21:11 <the 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 <the DIR> testdemo three files 1,784 bytes three directories 105,511,231,488 bytes available D: \ java_oj \ ReadFileFromClassPath \ target \ classes > the Java - JAR result.jar Exception in the Thread "main" java.lang.NullPointerException AT java.io.Reader. <the init> (the Source Unknown) AT the java.io.InputStreamReader. <the init> (Unknown the Source) AT testdemo.Demo.readFile (Demo.java: 18 is ) AT testdemo.Demo.main (Demo.java: 25 ) D: \ java_oj \ ReadFileFromClassPath \ target \ classes > Jat TF result.jar 'Jat' is not an internal or external command, operable program or batch file. D: \ java_oj \ ReadFileFromClassPath \ target \ classes > JAR TF result.jar META -INF / META -INF / the MANIFEST.MF testdemo / testdemo / Demo. Class D: \ java_oj \ ReadFileFromClassPath \ target \ classes >.. CMF JAR MANIFEST.MF result.jar \ testdemo \ \ inputFile D: \ java_oj \ ReadFileFromClassPath \ target \ classes > the dir drive D volume is software Volume Serial Number is 6BDF - 6A2D D: \ java_oj \ ReadFileFromClassPath \ target \ classes directory 2019/09/30 21:11 <the DIR> . 2019/09/30 21:11 <the DIR> .. 2019/09/30 20:45 37 [ inputFile 2019/09/30 21:10 50 the manifest. MF 2019/09/30 21:14 1,846 result.jar 2019/09/30 20:45 <the DIR> testdemo three files of 1,933 bytes three directories 105,511,231,488 bytes available 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>