【发布时间】:2012-02-12 00:40:18
【问题描述】:
我想创建一个包含其他 JAR 库的可执行 JAR 文件。但是当我执行 JAR 时,它给出了类路径问题的错误。
如何解决类路径问题?
【问题讨论】:
-
“我想创建一个包含其他 jar 库的可执行 Jar” 你想要的不如有效的重要。使用JWS 或其他类型的安装程序部署多个 Jar 已被证明在很多情况下都能正常工作。
标签: jar classpath executable java
我想创建一个包含其他 JAR 库的可执行 JAR 文件。但是当我执行 JAR 时,它给出了类路径问题的错误。
如何解决类路径问题?
【问题讨论】:
标签: jar classpath executable java
我觉得你可以这样试试;
这是一个简单的例子供你提问。首先,我们假设我们有一个像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
这是我的解决方案。我希望它能给你一些帮助......
【讨论】:
您应该为此使用第三方库。例如,OneJar。您必须使用 OneJar 工具(如 Ant 任务)而不是标准的 JRE 工具来构建最终的 JAR 文件。
在运行这样的 JAR 文件时,会启动 OneJar 的服务类而不是您的服务类。然后这个类加载打包在里面的 JAR 文件,以及你的类,并运行你的主类。
已经有类似的问题和答案。例如:堆栈溢出问题Easiest way to merge a release into one JAR file。
【讨论】: