【问题标题】:Creating a JAR file which contains other library files创建包含其他库文件的 JAR 文件
【发布时间】:2012-02-12 00:40:18
【问题描述】:

我想创建一个包含其他 JAR 库的可执行 JAR 文件。但是当我执行 JAR 时,它给出了类路径问题的错误。

如何解决类路径问题?

【问题讨论】:

  • “我想创建一个包含其他 jar 库的可执行 Jar” 你想要的不如有效的重要。使用JWS 或其他类型的安装程序部署多个 Jar 已被证明在很多情况下都能正常工作。

标签: jar classpath executable java


【解决方案1】:

我觉得你可以这样试试;

这是一个简单的例子供你提问。首先,我们假设我们有一个像D:\javademo 这样的项目目录。在这个工作目录中,我们创建一个主类 HelloWorld.java,其中包含我们的其他 JAR 文件,例如 commons-lang.jar。现在,我们必须将主要类 HelloWorld 和 commons-lang.jar 归档到 test.jar 文件中。

首先我们必须编辑我们的清单文件,以便我们可以指定我们的类路径和主类 像这样:

Manifest-Version: 1.0 
Created-By: tony example
Class-Path: test.jar commons-lang.jar
Main-Class: org.tony.java.HelloWorld

我们将此文件命名为test.mf。现在我们使用jar 命令来生成我们的JAR 文件,如下所示:

jar -cvfm test.jar test.mf -C ./ .

然后它会生成JAR文件test.jar。您可以使用此命令使用 java 命令运行此主类:

java -jar test.jar

这是我的解决方案。我希望它能给你一些帮助......

【讨论】:

  • 非常感谢,我对如何将库依赖项添加到 jar 文件感到困惑
【解决方案2】:

您应该为此使用第三方库。例如,OneJar。您必须使用 OneJar 工具(如 Ant 任务)而不是标准的 JRE 工具来构建最终的 JAR 文件。

在运行这样的 JAR 文件时,会启动 OneJar 的服务类而不是您的服务类。然后这个类加载打包在里面的 JAR 文件,以及你的类,并运行你的主类。

已经有类似的问题和答案。例如:堆栈溢出问题Easiest way to merge a release into one JAR file

【讨论】:

  • 我在发布之前尝试了很多次,但仍然无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 2011-04-20
  • 2013-02-18
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 2010-09-13
相关资源
最近更新 更多