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

¿·¤·¤¤JAR¥¢¡¼¥«¥¤¥Ö¤òºîÀ®¤·¤Þ¤¹¡£

i

JAR¥¢¡¼¥«¥¤¥Ö¤Îº÷°ú¾ðÊó¤òÀ¸À®¤·¤Þ¤¹¡£

t

JAR¥¢¡¼¥«¥¤¥Ö¤Î¥³¥ó¥Æ¥ó¥Ä¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£

u

JAR¥¢¡¼¥«¥¤¥Ö¤ò¹¹¿·¤·¤Þ¤¹¡£

x

JAR¥¢¡¼¥«¥¤¥Ö¤«¤é¥Õ¥¡¥¤¥ë¤òÃê½Ð¤·¤Þ¤¹¡£

¥ª¥×¥·¥ç¥ó

¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢JAR¥Õ¥¡¥¤¥ë¤òºîÀ®¡¢¹¹¿·¡¢Ãê½Ð¤Þ¤¿¤Ïɽ¼¨¤¹¤ëÊýË¡¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Þ¤¹¡£

e

entrypoint¥ª¥Ú¥é¥ó¥É¤Ç»ØÄꤵ¤ì¤ë¥¯¥é¥¹¤ò¡¢¼Â¹Ô²ÄǽJAR¥Õ¥¡¥¤¥ë¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤ë¥¹¥¿¥ó¥É¥¢¥í¥óJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤ËÀßÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤ÎMain-Class°À­Ãͤ¬ºîÀ®¤Þ¤¿¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤Þ¤¹¡£e¥ª¥×¥·¥ç¥ó¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®»þ(c)¤Þ¤¿¤Ï¹¹¿·»þ(u)¤Ë»ÈÍѤǤ­¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢Main.jar¥¢¡¼¥«¥¤¥Ö¤¬Main.class¥Õ¥¡¥¤¥ë¤È¤È¤â¤ËºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢¤½¤ÎºÝ¡¢¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤ÎMain-Class°À­ÃͤÏMain¤ËÀßÄꤵ¤ì¤Þ¤¹¡£

jar cfe Main.jar Main Main.class
Java Runtime Environment (JRE)¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¡¢¤³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òľÀܸƤӽФ¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
java -jar Main.jar
¤¢¤ë¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ë¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤Î¥¯¥é¥¹Ì¾¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥É¥Ã¥È(.)¤Þ¤¿¤Ï¥¹¥é¥Ã¥·¥å(/)¤Î¤¤¤º¤ì¤«¤ò¶èÀÚ¤êʸ»ú¤È¤·¤Æ»ÈÍѤǤ­¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Main.class¤¬mydir¤È¤¤¤¦Ì¾Á°¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤Ï¼¡¤Î¤¤¤º¤ì¤«¤ÎÊýË¡¤Ç»ØÄê¤Ç¤­¤Þ¤¹¡£
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

jarfile¥ª¥Ú¥é¥ó¥É¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¡¢ºîÀ®(c)¡¢¹¹¿·(u)¡¢Ãê½Ð(x)¤Þ¤¿¤Ïɽ¼¨(t)¤µ¤ì¤ëJAR¥Õ¥¡¥¤¥ë¤Î̾Á°¤ËÀßÄꤷ¤Þ¤¹¡£f¥ª¥×¥·¥ç¥ó¤ª¤è¤Ójarfile¥ª¥Ú¥é¥ó¥É¤ò¾Êά¤¹¤ë¤È¡¢jar¥³¥Þ¥ó¥É¤Ë¡¢stdin¤«¤é¤ÎJAR¥Õ¥¡¥¤¥ë̾¤ò¼õ¤±Æþ¤ì¤ë¤«(x¤ª¤è¤Ót¤Î¾ì¹ç)¡¢JAR¥Õ¥¡¥¤¥ë¤òstdout¤ËÁ÷¿®¤¹¤ë¤³¤È(c¤ª¤è¤Óu¤Î¾ì¹ç)¤¬»Ø¼¨¤µ¤ì¤Þ¤¹¡£

m

(META-INF/MANIFEST.MF¤Î¥¢¡¼¥«¥¤¥Ö¤Ë¤¢¤ë) jar¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Îmanifest¥ª¥Ú¥é¥ó¥É¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤«¤é¡¢Â°À­¤Î̾Á°¤ÈÃͤΥڥ¢¤ò´Þ¤á¤Þ¤¹¡£jar¥³¥Þ¥ó¥É¤Ï¡¢Æ±¤¸Ì¾Á°¤Î¥¨¥ó¥È¥ê¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¤ò½ü¤­¡¢Â°À­¤Î̾Á°¤ÈÃͤòJAR¥Õ¥¡¥¤¥ë¤ËÄɲä·¤Þ¤¹¡£Æ±¤¸Ì¾Á°¤Î¥¨¥ó¥È¥ê¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢jar¥³¥Þ¥ó¥É¤Ï°À­¤ÎÃͤò¹¹¿·¤·¤Þ¤¹¡£m¥ª¥×¥·¥ç¥ó¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®»þ(c)¤Þ¤¿¤Ï¹¹¿·»þ(u)¤Ë»ÈÍѤǤ­¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¡¢ÆÃÊ̤ÊÌÜŪ¤Î̾Á°-ÃͤΰÀ­¥Ú¥¢¤òÄɲäǤ­¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Ù¥ó¥À¡¼¾ðÊó¡¢¥ê¥ê¡¼¥¹¾ðÊ󡢥ѥ屡¼¥¸¡¦¥·¡¼¥ê¥ó¥°¤ò»ØÄꤹ¤ë°À­¡¢¤Þ¤¿¤ÏJAR¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô²Äǽ¤Ë¤¹¤ë¤¿¤á¤Î°À­¤òÄɲäǤ­¤Þ¤¹¡£m¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑÎã¤Ï¡¢http://docs.oracle.com/javase/tutorial/deployment/jar/index.html¤Ë¤¢¤ë ¥×¥í¥°¥é¥à¤Î¥Ñ¥Ã¥±¡¼¥¸²½¤Ë´Ø¤¹¤ë¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

M

¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥¨¥ó¥È¥ê¤òºîÀ®¤·¤Ê¤¤(c¤ª¤è¤Óu¤Î¾ì¹ç)¤«¡¢¤Þ¤¿¤Ï¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ïºï½ü¤·¤Þ¤¹(u¤Î¾ì¹ç)¡£M¥ª¥×¥·¥ç¥ó¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®»þ(c)¤Þ¤¿¤Ï¹¹¿·»þ(u)¤Ë»ÈÍѤǤ­¤Þ¤¹¡£

n

JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®(c)»þ¤Ë¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥³¥ó¥Æ¥ó¥Ä¤¬pack200(1)¥³¥Þ¥ó¥É¤Î¥Ñ¥Ã¥¯¤ª¤è¤Ó¥¢¥ó¥Ñ¥Ã¥¯Áàºî¤Î±Æ¶Á¤ò¼õ¤±¤Ê¤¤¤è¤¦¤Ë¥¢¡¼¥«¥¤¥Ö¤òÀµµ¬²½¤·¤Þ¤¹¡£¤³¤ÎÀµµ¬²½¤ò»ÈÍѤ·¤Ê¤¤¾ì¹ç¡¢½ð̾ÉÕ¤­JAR¤Î½ð̾¤Ï̵¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

v

¾ÜºÙ¤Ê½ÐÎϤòɸ½à½ÐÎϤËÀ¸À®¤·¤Þ¤¹¡£Îã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

0

(¥¼¥í) ZIP°µ½Ì¤ò»ÈÍѤ·¤Ê¤¤¤ÇJAR¥Õ¥¡¥¤¥ë¤òºîÀ®(c)¤Þ¤¿¤Ï¹¹¿·(u)¤·¤Þ¤¹¡£

-C dir

JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®(c)¤Þ¤¿¤Ï¹¹¿·(u)»þ¤Ë¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïfile¥ª¥Ú¥é¥ó¥É¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î½èÍýÃæ¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤ò°ì»þŪ¤ËÊѹ¹¤·¤Þ¤¹¡£¤³¤ÎÁàºî¤Ï¡¢tar¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î-C¥ª¥×¥·¥ç¥ó¤ÈƱÍͤˤʤ뤳¤È¤òÌÜŪ¤È¤·¤Æ¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¡¢classes¥Ç¥£¥ì¥¯¥È¥ê¤ËÊѹ¹¤µ¤ì¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤émy.jar¤ËBar.class¥Õ¥¡¥¤¥ë¤¬Äɲ䵤ì¤Þ¤¹¡£
jar uf my.jar -C classes Bar.class
¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢classes¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤·¡¢classes¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òmy.jar¤ËÄɲä·¤Þ¤¹(JAR¥Õ¥¡¥¤¥ë¤Ë¤Ïclasses¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Þ¤»¤ó)¡£¼¡¤Ë¸µ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÌá¤Ã¤Æ¤«¤é¡¢bin¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤·¡¢Xyz.class¤òmy.jar¤ËÄɲä·¤Þ¤¹¡£
jar uf my.jar -C classes . -C bin Xyz.class
classes¤Ëbar1¥Õ¥¡¥¤¥ë¤Èbar2¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢Á°½Ò¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤¿¸å¡¢JAR¥Õ¥¡¥¤¥ë¤Ë¤Ï¼¡¤Î¤â¤Î¤¬´Þ¤Þ¤ì¤Þ¤¹¡£
% jar tf my.jar
META-INF/
META-INF/MANIFEST.MF
bar1
bar2
Xyz.class

-Joption

»ØÄꤷ¤¿JVM¥ª¥×¥·¥ç¥ó¤ò¡¢JRE¤¬JAR¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤ¹¤ë¤è¤¦¤ËÀßÄꤷ¤Þ¤¹¡£JVM¥ª¥×¥·¥ç¥ó¤Ï¡¢java(1)¥³¥Þ¥ó¥É¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢-J-Xms48m¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48MB¤ËÀßÄꤵ¤ì¤Þ¤¹¡£

¥ª¥Ú¥é¥ó¥É

¼¡¤Î¥ª¥Ú¥é¥ó¥É¤Ï¡¢jar¥³¥Þ¥ó¥É¤Çǧ¼±¤µ¤ì¤Þ¤¹¡£

file

JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®(c)¤Þ¤¿¤Ï¹¹¿·(u)»þ¤Ë¡¢file¥ª¥Ú¥é¥ó¥É¤Ï¡¢¥¢¡¼¥«¥¤¥Ö¤ËÄɲ乤ëɬÍפΤ¢¤ë¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹¤È̾Á°¤òÄêµÁ¤·¤Þ¤¹¡£JAR¥Õ¥¡¥¤¥ë¤ÎÃê½Ð(x)¤Þ¤¿¤Ï¥³¥ó¥Æ¥ó¥Ä¤Î¥ê¥¹¥È(t)»þ¤Ë¡¢file¥ª¥Ú¥é¥ó¥É¤ÏÃê½Ð¤Þ¤¿¤Ï¥ê¥¹¥È¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤È̾Á°¤òÄêµÁ¤·¤Þ¤¹¡£¾¯¤Ê¤¯¤È¤â1¤Ä¤ÎÍ­¸ú¤Ê¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Ê£¿ô¤Îfile¥ª¥Ú¥é¥ó¥É¤ò¶õÇò¤Ç¶èÀÚ¤ê¤Þ¤¹¡£entrypoint¡¢jarfile¤Þ¤¿¤Ïmanifest¥ª¥Ú¥é¥ó¥É¤¬»ÈÍѤµ¤ì¤ë¾ì¹ç¤Ï¡¢¤½¤Î¸å¤Ëfile¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

entrypoint

JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®(c)¤Þ¤¿¤Ï¹¹¿·(u)»þ¤Ë¡¢entrypoint¥ª¥Ú¥é¥ó¥É¤Ï¡¢¼Â¹Ô²ÄǽJAR¥Õ¥¡¥¤¥ë¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤Æ¤¤¤ë¥¹¥¿¥ó¥É¥¢¥í¥óJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤È¤Ê¤ë¥¯¥é¥¹¤Î̾Á°¤òÄêµÁ¤·¤Þ¤¹¡£e¥ª¥×¥·¥ç¥ó¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ïentrypoint¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

jarfile

ºîÀ®(c)¡¢¹¹¿·(u)¡¢Ãê½Ð(x)¤Þ¤¿¤Ïɽ¼¨(t)¤¹¤ë¥Õ¥¡¥¤¥ë¤Î̾Á°¤òÄêµÁ¤·¤Þ¤¹¡£f¥ª¥×¥·¥ç¥ó¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ïjarfile¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£f¥ª¥×¥·¥ç¥ó¤ª¤è¤Ójarfile¥ª¥Ú¥é¥ó¥É¤ò¾Êά¤¹¤ë¤È¡¢jar¥³¥Þ¥ó¥É¤Ë¡¢stdin¤«¤é¤ÎJAR¥Õ¥¡¥¤¥ë̾¤ò¼õ¤±Æþ¤ì¤ë¤«(x¤ª¤è¤Ót¤Î¾ì¹ç)¡¢JAR¥Õ¥¡¥¤¥ë¤òstdout¤ËÁ÷¿®¤¹¤ë¤³¤È(c¤ª¤è¤Óu¤Î¾ì¹ç)¤¬»Ø¼¨¤µ¤ì¤Þ¤¹¡£

JAR¥Õ¥¡¥¤¥ë¤òº÷°úÉÕ¤±(i)¤¹¤ë¾ì¹ç¤Ï¡¢f¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Çjarfile¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤷ¤Þ¤¹¡£

manifest

JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®(c)¤Þ¤¿¤Ï¹¹¿·(u)»þ¤Ë¡¢manifest¥ª¥Ú¥é¥ó¥É¤ÏJAR¥Õ¥¡¥¤¥ë¤ÎMANIFEST.MF¤Ë´Þ¤á¤ë°À­¤Î̾Á°¤ÈÃͤò»ý¤Ä´û¸¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤òÄêµÁ¤·¤Þ¤¹¡£f¥ª¥×¥·¥ç¥ó¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ïmanifest¥ª¥Ú¥é¥ó¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

@arg-file

jar¥³¥Þ¥ó¥É¤òû½Ì¤Þ¤¿¤Ï´ÊÁDz½¤¹¤ë¤Ë¤Ï¡¢Ê̤Υƥ­¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤ò»ØÄꤷ¡¢ÀÜƬ¼­¤È¤·¤Æ¥¢¥Ã¥È¥Þ¡¼¥¯(@)¤òÉÕ¤±¤Æjar¥³¥Þ¥ó¥É¤ËÅϤ¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£jar¥³¥Þ¥ó¥É¤Ï¡¢¥¢¥Ã¥È¥Þ¡¼¥¯Ê¸»ú¤Ç»Ï¤Þ¤ë°ú¿ô¤ò¸«¤Ä¤±¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòŸ³«¤·¤Æ°ú¿ô¥ê¥¹¥È¤ËÁÞÆþ¤·¤Þ¤¹¡£

°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢jar¥³¥Þ¥ó¥É¤Î¥ª¥×¥·¥ç¥ó¤È°ú¿ô(°ú¿ô¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤µ¯Æ°¥Ä¡¼¥ë¤ËÅϤµ¤ì¤ë-J¥ª¥×¥·¥ç¥ó¤ò½ü¤¯)¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤Ï¡¢¶õÇò¤Þ¤¿¤Ï²þ¹Ôʸ»ú¤Ç¶èÀڤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢jar¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤­¤ë¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤ÆÁêÂÐŪ¤Ç¤¢¤ê¡¢°ú¿ô¥Õ¥¡¥¤¥ë¤Î¾ì½ê¤ËÂФ·¤Æ¤ÏÁêÂÐŪ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ä̾ï¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡¦¥·¥§¥ë¤Ë¤è¤Ã¤ÆŸ³«¤µ¤ì¤ë¥¢¥¹¥¿¥ê¥¹¥¯(*)¤Ê¤É¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤ÏŸ³«¤µ¤ì¤Þ¤»¤ó¡£

¼¡¤ÎÎã¤Ï¡¢find¥³¥Þ¥ó¥É¤Ë¤è¤ë¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê½ÐÎϤ«¤é¤Î¥Õ¥¡¥¤¥ë̾¤Çclasses.list¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ëÊýË¡¤ò¼¨¤·¤Þ¤¹¡£

find . -name '*.class' -print > classes.list
jar¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¡¢@arg-file¹½Ê¸¤ò»ÈÍѤ·¤Æclasses.list¥Õ¥¡¥¤¥ë¤òÅϤ¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
jar cf my.jar @classes.list
°ú¿ô¥Õ¥¡¥¤¥ë¤Ï¥Ñ¥¹¤ò»ØÄê¤Ç¤­¤Þ¤¹¤¬¡¢ÁêÂХѥ¹¤¬µ­½Ò¤µ¤ì¤¿°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢ÅϤµ¤ì¤¿¥Ñ¥¹¤ËÂФ·¤ÆÁêÂÐŪ¤Ç¤Ï¤Ê¤¯¡¢jar¥³¥Þ¥ó¥É¤Î¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤ËÁêÂÐŪ¤È¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
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 º÷°ú¤ÎÄɲÃ

³ô¼°¼è°ú¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÁê¸ß°Í¸¥¯¥é¥¹¤ò¡¢main.jar¡¢buy.jar¤ª¤è¤Ósell.jar¤Î3¤Ä¤ÎJAR¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤¹¤ë¾ì¹ç¡¢i¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£main.jar¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤ÎClass-Path°À­¤ò»ØÄꤹ¤ë¾ì¹ç¡¢i¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥É¤Î®ÅÙ¤ò¸þ¾å¤Ç¤­¤Þ¤¹¡£
Class-Path: buy.jar sell.jar
jar i main.jar
INDEX.LIST¥Õ¥¡¥¤¥ë¤¬META-INF¥Ç¥£¥ì¥¯¥È¥ê¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ë¤è¤Ã¤Æ¥¯¥é¥¹¤Þ¤¿¤Ï¥ê¥½¡¼¥¹¤Î¸¡º÷¤¬¹Ô¤ï¤ì¤ë¤È¤­¤Ë¡¢»ØÄꤷ¤¿JAR¥Õ¥¡¥¤¥ë¤¬¥À¥¦¥ó¥í¡¼¥É¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤ò»ÈÍѤ·¤Æ¡¢¸úΨŪ¤Ë¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤ò¥³¥Ô¡¼¤¹¤ë¤Ë¤Ï¡¢ºÇ½é¤Ëdir1Æâ¤Î¥Õ¥¡¥¤¥ë¤òstdout¤Ë°µ½Ì¤·¤Æ¤«¤é¡¢stdin¤«¤édir2¤Ë¥Ñ¥¤¥×¥é¥¤¥ó¤òºîÀ®¤·¤ÆÃê½Ð¤·¤Þ¤¹(-f¥ª¥×¥·¥ç¥ó¤ÏξÊý¤Îjar¥³¥Þ¥ó¥É¤Ç¾Êά¤·¤Þ¤¹)¡£

(cd dir1; jar c .) | (cd dir2; jar x)

´ØÏ¢¹àÌÜ

•pack200(1).
http://docs.oracle.com/javase/tutorial/deployment/jar/index.html¤Ë¤¢¤ë Java¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÎJAR¤Ë´Ø¤¹¤ë¹à
2013ǯ11·î21Æü JDK 8