0

我在 MapReduce 中创建了一个 wordcount 示例,并尝试使用以下命令制作 jar 文件:

hduseros@MT2012018:/usr/local/hadoop$ jar -cvf playground/wordcount.jar -C playground/classes

但它根本没有运行并给我以下结果:

hduseros@MT2012018:/usr/local/hadoop$ jar -cvf playground/wordcount.jar -C playground/classes
Usage: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
Options:
    -c  create new archive
    -t  list table of contents for archive
    -x  extract named (or all) files from archive
    -u  update existing archive
    -v  generate verbose output on standard output
    -f  specify archive file name
    -m  include manifest information from specified manifest file
    -e  specify application entry point for stand-alone application 
        bundled into an executable jar file
    -0  store only; use no ZIP compression
    -M  do not create a manifest file for the entries
    -i  generate index information for the specified jar files
    -C  change to the specified directory and include the following file
If any file is a directory then it is processed recursively.
The manifest file name, the archive file name and the entry point name are
specified in the same order as the 'm', 'f' and 'e' flags.

Example 1: to archive two class files into an archive called classes.jar: 
       jar cvf classes.jar Foo.class Bar.class 
Example 2: use an existing manifest file 'mymanifest' and archive all the
           files in the foo/ directory into 'classes.jar': 
       jar cvfm classes.jar mymanifest -C foo/ .

请纠正我错的地方。我已经设置了类路径。我可以运行已经存在但无法制作 jar 文件的示例。

4

4 回答 4

4

这可能是因为您没有给它提供它需要从中选择文件的位置。试试这个:

jar -cvf playground/wordcount.jar -C playground/classes .

并包括最后一个点 (.)

于 2013-02-01T05:04:48.493 回答
1

尝试消除破折号:jar cvf,不jar -cvf

于 2013-02-01T04:46:42.067 回答
1

尝试执行以下命令:

jar cvf playground/wordcount.jar playground/classes/*.class

另请参阅:构建接口类的 JAR 文件

于 2013-02-01T04:52:09.957 回答
0

-C 选项只是将您的目录更改为您之后给出的参数。切换到该目录后,您仍然应该添加要添加到 jar 文件的文件/目录。

请查看jar 命令的文档

于 2021-04-28T15:52:25.060 回答