#
# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

error.cant.open=\
     {0}\uc744(\ub97c) \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. 
error.illegal.option=\
        {0} \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
error.bad.option=\
        \uc635\uc158 -{ctxu} \uc911 \ud558\ub098\uac00 \uc9c0\uc815\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
error.bad.cflag=\
        'c' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!
error.bad.uflag=\
        'u' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest, 'e' \ud50c\ub798\uadf8 \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!
error.bad.eflag=\
	'\uae30\ubcf8 \ud074\ub798\uc2a4' \uc18d\uc131\uc744 \ud3ec\ud568\ud55c 'e' \ud50c\ub798\uadf8 \ubc0f manifest\ub97c \ud568\uaed8 \uc9c0\uc815\ud560 \uc218\n\
	 \uc5c6\uc2b5\ub2c8\ub2e4.
error.nosuch.fileordir=\
        {0} : \uc9c0\uc815\ud55c \ud30c\uc77c \ub610\ub294 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
error.write.file=\
        \uae30\uc874\uc758 jar \ud30c\uc77c\uc5d0 \uc4f0\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd
error.create.dir=\
        {0} : \ub514\ub809\ud1a0\ub9ac\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
error.incorrect.length=\
        {0} \ucc98\ub9ac \uc911 \uae38\uc774\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
out.added.manifest=\
        \ucd94\uac00\ub41c manifest
out.update.manifest=\
        \uc5c5\ub370\uc774\ud2b8\ub41c manifest
out.ignore.entry=\
        \uc785\ub825 \ud56d\ubaa9 {0} \ubb34\uc2dc \uc911
out.adding=\
        \ucd94\uac00 \uc911: {0}
out.deflated=\
        ({0}%\uac00 \uac10\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.)
out.stored=\
        (0%\uac00 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.)
out.create=\
        \ \ {0}\uc774(\uac00) \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
out.extracted=\
        {0}\uc774(\uac00) \ucd94\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
out.inflated=\
        \ \{0}\uc774(\uac00) \uc99d\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
out.size=\
        (\ub0b4\ubd80 = {0}) (\uc678\ubd80= {1})

usage=\
\uc0ac\uc6a9\ubc95: jar {ctxui}[vfm0Me] [jar \ud30c\uc77c] [manifest \ud30c\uc77c] [\uc2dc\uc791 \uc9c0\uc810] [-C \ub514\ub809\ud1a0\ub9ac] \ud30c\uc77c ...\n\
\uc635\uc158:\n\
\ \   -c  \uc0c8 \uc544\uce74\uc774\ube0c \ub9cc\ub4e4\uae30\n\
\ \   -t  \uc544\uce74\uc774\ube0c\uc5d0 \ub300\ud55c \ub0b4\uc6a9 \ubaa9\ub85d \ud14c\uc774\ube14\n\
\ \   -x  \uba85\uba85\ub41c(\ub610\ub294 \ubaa8\ub4e0) \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\uc5d0\uc11c \ucd94\ucd9c\n\
\ \   -u  \uae30\uc874 \uc544\uce74\uc774\ube0c \uc5c5\ub370\uc774\ud2b8\n\
\ \   -v  \ud45c\uc900 \ucd9c\ub825\uc5d0 \uc138\ubd80 \uc815\ubcf4 \ud45c\uc2dc \ucd9c\ub825 \uc0dd\uc131\n\
\ \   -f  \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \uc9c0\uc815\n\
\ \   -m  \uc9c0\uc815\ud55c \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\ub85c\ubd80\ud130 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \uc815\ubcf4 \ud3ec\ud568\n\
\ \   -e  jar \uc2e4\ud589 \ud30c\uc77c\uc5d0 \ubc88\ub4e4\ub85c \uc81c\uacf5\ub41c \ub3c5\ub9bd \uc2e4\ud589\ud615 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \n\
\ \       \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc2dc\uc791 \uc9c0\uc810 \uc9c0\uc815\n\
\ \   -0  \uc800\uc7a5 \uc804\uc6a9, ZIP \uc555\ucd95 \uc0ac\uc6a9 \uc548 \ud568\n\
\ \   -M  \ud56d\ubaa9\uc5d0 \ub300\ud574 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc9c0 \uc54a\uc74c\n\
\ \   -i  \uc9c0\uc815\ud55c jar \ud30c\uc77c\uc5d0 \ub300\ud55c \uc0c9\uc778 \uc815\ubcf4 \uc0dd\uc131\n\
\ \   -C  \uc9c0\uc815\ud55c \ub514\ub809\ud1a0\ub9ac\ub85c \ubcc0\uacbd\ud558\uace0 \ub2e4\uc74c \ud30c\uc77c \ud3ec\ud568\n\
\uc5b4\ub5a4 \ud30c\uc77c\uc774 \ub514\ub809\ud1a0\ub9ac\uba74 \uc7ac\uadc0\uc801\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.\n\
\ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c \uc774\ub984, \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \ubc0f \uc2dc\uc791 \uc9c0\uc810 \uc774\ub984\uc740\n\
'm', 'f' \ubc0f 'e' \ud50c\ub798\uadf8\uc640 \ub3d9\uc77c\ud55c \uc21c\uc11c\ub85c \uc9c0\uc815\ub429\ub2c8\ub2e4.\n\n\
\uc608 1: classes.jar\ub77c\ub294 \uc544\uce74\uc774\ube0c\uc5d0 \ub450 \ud074\ub798\uc2a4 \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\
\ \      jar cvf classes.jar Foo.class Bar.class \n\
\uc608 2: \uae30\uc874\uc758 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c 'mymanifest'\ub97c \uc0ac\uc6a9\ud558\uc5ec\n\
\ \          foo/ \ub514\ub809\ud1a0\ub9ac\uc758 \ubaa8\ub4e0 \ud30c\uc77c\uc744 'classes.jar'\ub85c \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\
\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
