jar文件无法在其他系统中解压缩

时间:2014-10-21 03:25:29

标签: java jar

我使用命令提示符(CMD)在java中构建一个jar文件,jar文件名是test.jar, 首先,我在我的应用程序中使用了一些API,让它成为a.jar和b.jar,我将该文件放在我的'test.java'所在的同一位置。我的manifest.text看起来如下:

Main-Class: test
Class-Path: a.jar b.jar

我使用以下命令构建了我的jar文件:

jar cfm  test.jar manifest.txt test.class a.jar b.jar

所以我得到了一个jar文件,我使用以下命令在我的机器上运行它:

java -jar test.jar

它工作得很好。但是,当我把这个'test.jar'放在另一个系统中并运行命令时,它无法工作,当我解压缩jar文件并运行jar文件运行命令时,它可以工作。为什么没有在其他系统中提取它不工作?如何在不提取的情况下使其工作?请指导我?

1 个答案:

答案 0 :(得分:0)

您无法使用清单中的Class-Path:参数来引用您正在创建的jar中的jar。有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

当a.jar和b.jar位于同一目录中时(在原始计算机上运行它可能是正确的),它可以正常工作,但在另一台只有副本位于jar中的计算机上则不行。

一个选项是从a.jar和b.jar中提取类,并使用test.class将它们运行起来。这在大多数情况下都有效。我相信有些工具可以为你管理,虽然我主要使用Maven项目,如果我需要将几个罐子组合成一个,只需使用Maven Shade Plugin