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 ...]
ÀâÌÀ
jar¥³¥Þ¥ó¥É¤Ï¡¢ZIP¤ª¤è¤ÓZLIB°µ½Ì·Á¼°¤Ë´ð¤Å¤¯ÈÆÍѤΥ¢¡¼¥«¥¤¥Ö¤ª¤è¤Ó°µ½Ì¥Ä¡¼¥ë¤Ç¤¹¡£¤¿¤À¤·¡¢jar¥³¥Þ¥ó¥É¤Ï¡¢¼ç¤Ë¤¤¤¯¤Ä¤«¤ÎJava¥¢¥×¥ì¥Ã¥È¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òñ°ì¤Î¥¢¡¼¥«¥¤¥Ö¤Ë¥Ñ¥Ã¥±¡¼¥¸²½¤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Þ¤·¤¿¡£¥¢¥×¥ì¥Ã¥È¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È(¥Õ¥¡¥¤¥ë¡¢¥¤¥á¡¼¥¸¡¢¤ª¤è¤Ó¥µ¥¦¥ó¥É)¤¬1¤Ä¤Î¥¢¡¼¥«¥¤¥Ö¤Ë·ë¹ç¤µ¤ì¤Æ¤¤¤ë¤È¡¢Java¥¨¡¼¥¸¥§¥ó¥È(¥Ö¥é¥¦¥¶¤Ê¤É)¤Ï¡¢¤½¤ì¤é¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò1²ó¤ÎHTTP¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ç¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤´¤È¤Ë¿·¤·¤¤Àܳ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥À¥¦¥ó¥í¡¼¥É»þ´Ö¤¬ÂçÉý¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢jar¥³¥Þ¥ó¥É¤Ï¥Õ¥¡¥¤¥ë¤Î°µ½Ì¤â¹Ô¤¦¤¿¤á¡¢¥À¥¦¥ó¥í¡¼¥É»þ´Ö¤¬¤µ¤é¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢jar¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¡¢¥Õ¥¡¥¤¥ëÆâ¤Î¸Ä¡¹¤Î¥¨¥ó¥È¥ê¤Ë¥¢¥×¥ì¥Ã¥ÈºîÀ®¼Ô¤Ë¤è¤ë½ð̾¤ò½ñ¤¹þ¤á¤ë¤¿¤á¡¢ÇÛÉÛ¸µ¤Îǧ¾Ú¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£JAR¥Õ¥¡¥¤¥ë¤Ï¡¢°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥¨¥ó¥È¥ê¤È¤·¤Æ»ÈÍѤǤ¤Þ¤¹¡£
jar¥³¥Þ¥ó¥É¤Î¹½Ê¸¤Ï¡¢tar¥³¥Þ¥ó¥É¤Î¹½Ê¸¤Ë»÷¤Æ¤¤¤Þ¤¹¡£É¬¿Ü¤ÎÁàºî¤Î°ú¿ô¤Î1¤Ä¤ÇÄêµÁ¤µ¤ì¤¿Ê£¿ô¤ÎÁàºî¥â¡¼¥É¤¬¤¢¤ê¤Þ¤¹¡£Â¾¤Î°ú¿ô¤Ï¡¢Áàºî¤ÎÆ°ºî¤òÊѹ¹¤¹¤ë¥ª¥×¥·¥ç¥ó¡¢¤Þ¤¿¤ÏÁàºî¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËɬÍפʥª¥Ú¥é¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£
Áàºî¤Î°ú¿ô
jar¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¼¡¤ÎÁàºî¤Î°ú¿ô¤Î¤¤¤º¤ì¤«¤ò»ØÄꤷ¤Æ¼Â¹Ô¤µ¤ì¤ëÁàºî¤òÁªÂò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¹Ô¤Ç¾¤Î1ʸ»ú¤Î¥ª¥×¥·¥ç¥ó¤Èº®ºß¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢Ä̾Áàºî¤Î°ú¿ô¤Ï»ØÄꤵ¤ì¤ëºÇ½é¤Î°ú¿ô¤Ç¤¹¡£
c
i
t
u
x
¥ª¥×¥·¥ç¥ó
¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢JAR¥Õ¥¡¥¤¥ë¤òºîÀ®¡¢¹¹¿·¡¢Ãê½Ð¤Þ¤¿¤Ïɽ¼¨¤¹¤ëÊýË¡¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Þ¤¹¡£
e
¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢Main.jar¥¢¡¼¥«¥¤¥Ö¤¬Main.class¥Õ¥¡¥¤¥ë¤È¤È¤â¤ËºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢¤½¤ÎºÝ¡¢¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤ÎMain-Class°ÀÃͤÏMain¤ËÀßÄꤵ¤ì¤Þ¤¹¡£
jar cfe Main.jar Main Main.class
java -jar Main.jar
jar -cfe Main.jar mydir/Main mydir/Main.class jar -cfe Main.jar mydir.Main mydir/Main.class
Ãíµ
Ãí°Õ ÆÃÄê¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¤âMain-Class°À¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëm¥ª¥×¥·¥ç¥ó¤Èe¥ª¥×¥·¥ç¥ó¤ÎξÊý¤òƱ»þ¤Ë»ØÄꤹ¤ë¤È¡¢Main-Class¤Î»ØÄ꤬¤¢¤¤¤Þ¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¤¢¤¤¤Þ¤¤¤µ¤Ë¤è¤Ã¤Æ¥¨¥é¡¼¤¬È¯À¸¤·¡¢jar¥³¥Þ¥ó¥É¤ÎºîÀ®¤ä¹¹¿·¤ÎÁàºî¤¬½ªÎ»¤·¤Þ¤¹¡£ |
f
m
¥Ç¥Õ¥©¥ë¥È¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¡¢ÆÃÊ̤ÊÌÜŪ¤Î̾Á°-ÃͤΰÀ¥Ú¥¢¤òÄɲäǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Ù¥ó¥À¡¼¾ðÊó¡¢¥ê¥ê¡¼¥¹¾ðÊ󡢥ѥ屡¼¥¸¡¦¥·¡¼¥ê¥ó¥°¤ò»ØÄꤹ¤ë°À¡¢¤Þ¤¿¤ÏJAR¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô²Äǽ¤Ë¤¹¤ë¤¿¤á¤Î°À¤òÄɲäǤ¤Þ¤¹¡£m¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑÎã¤Ï¡¢http://docs.oracle.com/javase/tutorial/deployment/jar/index.html¤Ë¤¢¤ë ¥×¥í¥°¥é¥à¤Î¥Ñ¥Ã¥±¡¼¥¸²½¤Ë´Ø¤¹¤ë¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
M
n
v
0
-C dir
jar uf my.jar -C classes Bar.class
jar uf my.jar -C classes . -C bin Xyz.class
% jar tf my.jar META-INF/ META-INF/MANIFEST.MF bar1 bar2 Xyz.class
-Joption
¥ª¥Ú¥é¥ó¥É
¼¡¤Î¥ª¥Ú¥é¥ó¥É¤Ï¡¢jar¥³¥Þ¥ó¥É¤Çǧ¼±¤µ¤ì¤Þ¤¹¡£
file
entrypoint
jarfile
JAR¥Õ¥¡¥¤¥ë¤òº÷°úÉÕ¤±(i)¤¹¤ë¾ì¹ç¤Ï¡¢f¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Çjarfile¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤷ¤Þ¤¹¡£
manifest
@arg-file
°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢jar¥³¥Þ¥ó¥É¤Î¥ª¥×¥·¥ç¥ó¤È°ú¿ô(°ú¿ô¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤µ¯Æ°¥Ä¡¼¥ë¤ËÅϤµ¤ì¤ë-J¥ª¥×¥·¥ç¥ó¤ò½ü¤¯)¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤Ï¡¢¶õÇò¤Þ¤¿¤Ï²þ¹Ôʸ»ú¤Ç¶èÀڤ뤳¤È¤¬¤Ç¤¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢jar¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤¤ë¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤ÆÁêÂÐŪ¤Ç¤¢¤ê¡¢°ú¿ô¥Õ¥¡¥¤¥ë¤Î¾ì½ê¤ËÂФ·¤Æ¤ÏÁêÂÐŪ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ä̾ï¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡¦¥·¥§¥ë¤Ë¤è¤Ã¤ÆŸ³«¤µ¤ì¤ë¥¢¥¹¥¿¥ê¥¹¥¯(*)¤Ê¤É¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤ÏŸ³«¤µ¤ì¤Þ¤»¤ó¡£
¼¡¤ÎÎã¤Ï¡¢find¥³¥Þ¥ó¥É¤Ë¤è¤ë¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê½ÐÎϤ«¤é¤Î¥Õ¥¡¥¤¥ë̾¤Çclasses.list¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ëÊýË¡¤ò¼¨¤·¤Þ¤¹¡£
find . -name '*.class' -print > classes.list
jar cf my.jar @classes.list
jar @dir/classes.list
Ãí°Õ
e¡¢f¤ª¤è¤Óm¥ª¥×¥·¥ç¥ó¤Ï¡¢entrypoint¡¢jarfile¤ª¤è¤Ómanifest¥ª¥Ú¥é¥ó¥É¤ÈƱ¤¸½ç½ø¤Ç¥³¥Þ¥ó¥É¹Ô¤Ë½Ð¸½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
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 º÷°ú¤ÎÄɲÃ
Class-Path: buy.jar sell.jar jar i main.jar
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤ò»ÈÍѤ·¤Æ¡¢¸úΨŪ¤Ë¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤ò¥³¥Ô¡¼¤¹¤ë¤Ë¤Ï¡¢ºÇ½é¤Ëdir1Æâ¤Î¥Õ¥¡¥¤¥ë¤òstdout¤Ë°µ½Ì¤·¤Æ¤«¤é¡¢stdin¤«¤édir2¤Ë¥Ñ¥¤¥×¥é¥¤¥ó¤òºîÀ®¤·¤ÆÃê½Ð¤·¤Þ¤¹(-f¥ª¥×¥·¥ç¥ó¤ÏξÊý¤Îjar¥³¥Þ¥ó¥É¤Ç¾Êά¤·¤Þ¤¹)¡£
(cd dir1; jar c .) | (cd dir2; jar x)
´ØÏ¢¹àÌÜ
2013ǯ11·î21Æü | JDK 8 |