【问题标题】:Creating a Jar file as a one-liner with multiple classes in CMD/Powershell在 CMD/Powershell 中创建一个包含多个类的单行 Jar 文件
【发布时间】:2013-08-30 12:39:00
【问题描述】:

我正在尝试将以下 Linux JAR 命令转换为在 CMD 中以单行方式运行:

$ jar cvf JarName.jar */*.class

我发现很难做到,因为 CMD / Powershell 中没有文件扩展,就像在基于 *nix 的 shell 中一样。我知道我可以通过使用适当的类文件创建清单来做到这一点,但是一个衬里看起来非常好和简单。我尝试过使用 DIR 和管道,但似乎类文件是参数,而不是来自 STDIN。我也尝试过使用 FOR 命令,但我不知道如何使它成为一行。

我是否遗漏了一些明显的东西?

非常感谢! 植物小姐

【问题讨论】:

  • */*.class 是否只是获取运行该文件的子目录中的所有 .class 文件?
  • */*.class 获取存储在当前目录的子目录中的所有类文件。谢谢!
  • 也许在 PowerShell ...gci -recurce -filter *.class | % {jar cvf JarName.jar $_.FullName}
  • 嗨,克里斯 N。感谢您的评论。看起来您的命令非常接近,但为每个 .class 创建了一个 jar,而不是将所有类文件打包在一起。我以后可能会更多地使用它,因为这似乎有潜力。

标签: java powershell jar cmd


【解决方案1】:

如果文件夹树只包含您想要包含在 .jar 文件中的文件,您可以这样做:

jar cvf JarName.jar .

否则,最简单的方法可能是通过 robocopy 复制文件夹结构,仅包含类文件,然后通过 jar 复制:

robocopy "C:\path\to\classdir" "C:\path\to\classdir_dup" *.class /s
jar cvf JarName.jar -C "C:\path\to\classdir_dup" .
rd /s /q "C:\path\to\classdir_dup"

【讨论】:

  • 感谢安斯加尔!我唯一需要添加的是 robocopy 命令的 /S 选项,这就像一个魅力。谢谢!
【解决方案2】:

我可能遗漏了一些东西,但您只是想在所有子目录中添加所有类文件吗?我认为它是这样工作的:

jar cvf JarName.jar *.class

【讨论】:

  • 这不会递归到子文件夹中。
  • 感谢您的回答,nograpes,但 Ansgar 是对的——它不会递归到子目录中。我有多个子目录,每个子目录都有应该包含在 jar 中的类文件...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
相关资源
最近更新 更多