jar(1) jar(1) jar - Java Archive (JAR) JAR jar c[efmMnv0] [entrypoint] [jarfile] [manifest] [-C dir] file ... [-Joption ...] [@arg-file ...] JAR jar u[efmMnv0] [entrypoint] [jarfile] [manifest] [-C dir] file ... [-Joption ...] [@arg-file ...] JAR jar x[vf] [jarfile] file ... [-Joption ...] [@arg-file ...] JAR jar t[vf] [jarfile] file ... [-Joption ...] [@arg-file ...] JAR jar i jarfile [-Joption ...] [@arg-file ...] jarZIPZLIBjarJava()1Java()1HTTPjarjarJAR jartar1 jar1 c JAR i JAR t JAR u JAR x JAR JAR e entrypointJARJavaMain-ClasseJAR(c)(u) Main.jarMain.classMain-ClassMain jar cfe Main.jar Main Main.class Java Runtime Environment (JRE) java -jar Main.jar (.)(/)Main.classmydir jar -cfe Main.jar mydir/Main mydir/Main.class jar -cfe Main.jar mydir.Main mydir/Main.class +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | |Main-ClassmeMain-Classjar | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ f jarfile(c)(u)(x)(t)JARfjarfilejarstdinJAR(xt)JARstdout(cu) m (META-INF/MANIFEST.MF) jarmanifestjarJARjarmJAR(c)(u) -JARmhttp://docs.oracle.com/javase/tutorial/deployment/jar/index.html M (cu)(u)MJAR(c)(u) n JAR(c)pack200(1)JAR v 0 () ZIPJAR(c)(u) -C dir JAR(c)(u)filetar-Cclassesmy.jarBar.class jar uf my.jar -C classes Bar.class classesclassesmy.jar(JARclasses)binXyz.classmy.jar jar uf my.jar -C classes . -C bin Xyz.class classesbar1bar2JAR % jar tf my.jar META-INF/ META-INF/MANIFEST.MF bar1 bar2 Xyz.class -Joption JVMJREJARJVMjava(1)-J-Xms48m48MB jar file JAR(c)(u)fileJAR(x)(t)file1fileentrypointjarfilemanifestfile entrypoint JAR(c)(u)entrypointJARJavaeentrypoint jarfile (c)(u)(x)(t)fjarfilefjarfilejarstdinJAR(xt)JARstdout(cu) JAR(i)fjarfile manifest JAR(c)(u)manifestJARMANIFEST.MFfmanifest @arg-file jar(@)jarjar jar(-J)jar(*) findclasses.list find . -name '*.class' -print > classes.list jar@arg-fileclasses.list jar cf my.jar @classes.list jar jar @dir/classes.list efmentrypointjarfilemanifest jar cmef myManifestFile MyMainClass myFile.jar *.class 1 % ls 1.au Animator.class monkey.jpg 2.au Wave.class spacemusic.au 3.au at_work.gif % jar cvf bundle.jar * added manifest adding: 1.au(in = 2324) (out= 67)(deflated 97%) adding: 2.au(in = 6970) (out= 90)(deflated 98%) adding: 3.au(in = 11616) (out= 108)(deflated 99%) adding: Animator.class(in = 2266) (out= 66)(deflated 97%) adding: Wave.class(in = 3778) (out= 81)(deflated 97%) adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) 2 % ls -F audio/ classes/ images/ % jar cvf bundle.jar audio classes images added manifest adding: audio/(in = 0) (out= 0)(stored 0%) adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) adding: classes/(in = 0) (out= 0)(stored 0%) adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) adding: images/(in = 0) (out= 0)(stored 0%) adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) % ls -F audio/ bundle.jar classes/ images/ 3 JAR % jar tf bundle.jar META-INF/ META-INF/MANIFEST.MF audio/1.au audio/2.au audio/3.au audio/spacemusic.au classes/Animator.class classes/Wave.class images/monkey.jpg images/at_work.gif 4 main.jarbuy.jarsell.jar3JARimain.jarClass-Pathi Class-Path: buy.jar sell.jar jar i main.jar INDEX.LISTMETA-INFJAR dir1stdoutstdindir2(-fjar) (cd dir1; jar c .) | (cd dir2; jar x) o pack200(1). o http://docs.oracle.com/javase/tutorial/deployment/jar/index.html JavaJAR JDK 8 20131121 jar(1)