#
# Copyright 2000-2006 Sun Microsystems, Inc.  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.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

error.cant.open=\
     \u7121\u6cd5\u958b\u555f\ufe30{0} 
error.illegal.option=\
        \u975e\u6cd5\u7684\u9078\u9805\ufe30{0}
error.bad.option=\
        \u5176\u4e2d\u4e00\u500b\u9078\u9805 -{ctxu} \u5fc5\u9808\u52a0\u4ee5\u6307\u5b9a\u3002
error.bad.cflag=\
'c' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57
error.bad.uflag=\
'u' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u3001'e' \u65d7\u6a19\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57
error.bad.eflag=\
	\u7121\u6cd5\u540c\u6642\u6307\u5b9a 'e' \u65d7\u6a19\u548c\u5177\u6709 'Main-Class' \u5c6c\u6027\u7684\n\
	\u6e05\u55ae\uff01
error.nosuch.fileordir=\
        {0}\ufe30\u6c92\u6709\u9019\u985e\u6a94\u6848\u6216\u76ee\u9304
error.write.file=\
        \u5beb\u5165\u73fe\u6709\u7684 jar \u6a94\u6848\u6642\u767c\u751f\u932f\u8aa4
error.create.dir=\
        {0}\ufe30\u7121\u6cd5\u5efa\u7acb\u76ee\u9304
error.incorrect.length=\
        \u8655\u7406\ufe30{0} \u6642\u9577\u5ea6\u4e0d\u6b63\u78ba
out.added.manifest=\
        \u65b0\u589e manifest
out.update.manifest=\
        \u66f4\u65b0 manifest
out.ignore.entry=\
        \u5ffd\u7565\u9805\u76ee {0}
out.adding=\
        \u65b0\u589e\ufe30{0}
out.deflated=\
        (\u58d3\u7e2e {0}%)
out.stored=\
        (\u5132\u5b58 0%)
out.create=\
        \u5efa\u7acb\ufe30{0}
out.extracted=\
        \u64f7\u53d6\ufe30{0}
out.inflated=\
        \u64f4\u5c55\ufe30{0}
out.size=\
        \ (\u8b80={0})(\u5beb={1})

usage=\
\u7528\u6cd5\uff1ajar {ctxui}[vfm0Me] [jar \u6a94\u6848] [\u6e05\u55ae\u6a94\u6848] [\u9032\u5165\u9ede] [-C \u76ee\u9304] \u6a94\u6848 ...\n\
\u9078\u9805\uff1a\n\
\ \   -c  \u5efa\u7acb\u65b0\u7684\u6b78\u6a94\n\
\ \   -t  \u5217\u51fa\u6b78\u6a94\u7684\u76ee\u9304\n\
\ \   -x  \u5f9e\u6b78\u6a94\u4e2d\u64f7\u53d6\u5df2\u547d\u540d\u7684 (\u6216\u6240\u6709) \u6a94\u6848\n\
\ \   -u  \u66f4\u65b0\u73fe\u6709\u6b78\u6a94\n\
\ \   -v  \u5728\u6a19\u6e96\u8f38\u51fa\u4e2d\u7522\u751f\u8a73\u7d30\u8f38\u51fa\n\
\ \   -f  \u6307\u5b9a\u6b78\u6a94\u6a94\u6848\u540d\u7a31\n\
\ \   -m  \u5305\u542b\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u4e2d\u7684\u6e05\u55ae\u8cc7\u8a0a\n\
\ \   -e  \u70ba\u7368\u7acb\u61c9\u7528\u7a0b\u5f0f\u6307\u5b9a\u61c9\u7528\u7a0b\u5f0f\u9032\u5165\u9ede\n\
\ \       \u5df2\u96a8\u9644\u65bc\u53ef\u57f7\u884c jar \u6a94\u6848\u4e2d\n\
\ \   -0  \u50c5\u5132\u5b58\uff1b\u4e0d\u4f7f\u7528 ZIP \u58d3\u7e2e\u65b9\u5f0f\n\
\ \   -M  \u4e0d\u70ba\u9805\u76ee\u5efa\u7acb\u6e05\u55ae\u6a94\u6848\n\
\ \   -i  \u70ba\u6307\u5b9a\u7684 jar \u6a94\u6848\u7522\u751f\u7d22\u5f15\u8cc7\u8a0a\n\
\ \   -C  \u8b8a\u66f4\u81f3\u6307\u5b9a\u76ee\u9304\u4e26\u5305\u542b\u5f8c\u9762\u6240\u5217\u7684\u6a94\u6848\n\
\u5982\u679c\u6709\u4efb\u4f55\u6a94\u6848\u662f\u76ee\u9304\uff0c\u5247\u6703\u5c0d\u5176\u9032\u884c\u905e\u8ff4\u8655\u7406\u3002\n\
\u6e05\u55ae\u6a94\u6848\u540d\u7a31\u3001\u6b78\u6a94\u6a94\u6848\u540d\u7a31\u548c\u9032\u5165\u9ede\u540d\u7a31\n\
\u7684\u6307\u5b9a\u9806\u5e8f\u8207\u6307\u5b9a 'm' \u65d7\u6a19\u3001'f' \u65d7\u6a19\u548c 'e' \u65d7\u6a19\u7684\u9806\u5e8f\u76f8\u540c\u3002\n\n\
\u7bc4\u4f8b 1\uff1a\u5c07\u5169\u500b\u985e\u5225\u6a94\u6848\u6b78\u6a94\u81f3\u540d\u70ba classes.jar \u7684\u6b78\u6a94\u4e2d\uff1a\n\
\ \      jar cvf classes.jar Foo.class Bar.class\n\
\u7bc4\u4f8b 2\uff1a\u4f7f\u7528\u73fe\u6709\u6e05\u55ae\u6a94\u6848 'mymanifest' \u4e26\u5c07\n\
\ \          foo/ \u76ee\u9304\u4e2d\u7684\u6240\u6709\u6a94\u6848\u6b78\u6a94\u81f3 'classes.jar' \u4e2d\uff1a\n\
\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
