java - 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

标签 java linux command-line jar executable-jar

我知道 eclipse 会生成一个可运行的 jar 文件,其中提取并包含在 jar 文件中的所有库 .jar 文件。从命令提示符手动创建 jar 文件时,我该如何做类似的事情。我需要将所有 lib jar 提取到 classes 文件夹中吗?

目前我正在使用-

    jar cvfm example.jar manifest.txt -C  Classes/ .

这会创建一个包含所有类文件的 jar 文件,我需要将所有库 jar 放在与此 example.jar 相同的文件夹中。

最佳答案

jar 命令行实用程序无法执行此类操作。依赖问题有 3 种主要解决方案:

  1. 在您的 MANIFEST.MF 中,您可以引用其他 jar 文件作为类路径的一部分,然后人们可以使用 java -jar [just your jar] 调用您的代码,并且您的依赖项将被提取
  2. 您可以将您的代码和依赖项打包到一个 fat jar 中(这就是您所描述的)。通常你只是将你的项目转换为使用一些构建工具(比简单的 javac 和 jar 更高级)并配置该工具。例如 with maven .查看 2 种不同的方法 herehere
  3. (再次使用构建工具)你可以使用比 fat jar 更好的东西 - 使用 one-jar .不同之处在于,使用 fat jar 子时,您会冒着不同库中同名文件“冲突”的风险

关于java - 如何从类似于 eclipse 的命令行创建可运行的 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16198409/

相关文章:

java - 如何编译使用rJava的R包

java - 如何避免在 ArrayAdapter 中泄漏上下文

powershell - 为什么 PowerShell 在命令行上以不同方式处理空字符串?

css - 如何在不创建映射文件的情况下编译 sass/scss

java - 使用 Selenium 进行 Spring MVC 集成测试

java - 正在获取cookie

linux - 如何通过限制 bash shell 脚本中的线程数来一次复制五个文件而不是一个文件?

linux:检测您是否在 vnc session 中运行

c - 尝试使用陷阱标志和陷阱信号处理程序单步执行程序,在 vsyscall 上崩溃

linux - 如何使用通配符名称创建子目录,Linux