#
# 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=\
     \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
