如何将基本罐子放到可执行的jar中?

时间:2012-01-20 02:07:54

标签: java jar executable-jar

大家好,

我有大约10个罐子,当我运行我的程序时,我会调用以下内容:

java -Xmx1024m -cp a.jar;b.jar;c.jar;whatever.jar -Dfile.encoding=UTF-8 [package][class]

我想将其作为可执行jar。我想当我unjar(这听起来很奇怪,但我使用的是java命令 - 不使用通用的zip程序)包含[package][class]的jar,更新manifest.mf并重新启动它。不幸的是,这不起作用。

我是否可以将其作为可执行文件jar或者我应该解除它并将其全部加起来?

2 个答案:

答案 0 :(得分:1)

您只需在清单文件中使用此行

Main-Class: my.package.Main

然后使用jar标志运行m命令,并为其指定清单文件的名称:

jar cmf manifest main.jar *.class

不幸的是,罐子里不能包含其他罐子。给包含入口点的jar Main-Class,然后设置类路径,以便可以访问其他9个jar。

答案 1 :(得分:-1)

Jar是一组文件。要使jar成为可执行文件,最重要的是它应该包含一个具有 main()方法的类。因此,只有包含具有main方法的.class文件时,才能使jar可执行。那个班级看起来像这样。

public class AClass
{
    public static void main(String[] args)
    {
        ...
    }jar 
       ...
}

然后,只有这样才能使jar可执行。

如果存在main()方法类。然后让jar可执行文件执行此操作。

  1. 提取jar
  2. 在清单文件中添加此行Main-Class:AClass,不要忘记在此行后按enter。请遵循此link
  3. Rejar类文件。你现在有了可执行的jar
  4. 要执行jar,(假设你创建了a.jar可执行文件),然后运行java -jar a.jar来运行jar文件。

    第二件事是您在问题中发布的命令不要求这些jar可执行。当您使用-cp时,参数(即 a.jar 等...)基本上是库,换句话说,当java查找要查找的类文件时一个类或一个函数的定义或其他任何内容,如果它正在查找的内容不是java标准库的一部分,它将查看这些jars