代码之家  ›  专栏  ›  技术社区  ›  rouble

在运行Java- jar时包含外部jar

  •  38
  • rouble  · 技术社区  · 14 年前

    根据我的阅读,当你执行如下命令时:

    java -jar foo.jar
    

    然后忽略主类路径,并从清单文件中获取类路径。

    此外,命令行上声明的类路径也将被忽略。所以在:

    java -classpath /usr/local/jar/foobar.jar -jar foo.jar
    

    /usr/local/jar/foobar.jar被忽略。

    最后,我读到清单文件只能包含JAR文件中的相对路径。

    那么,如何包括指向外部JAR的绝对路径,这些JAR存在于系统中,但不存在于正在执行的JAR文件中?

    2 回复  |  直到 11 年前
        1
  •  38
  •   matt b    14 年前

    有没有理由避免像这样调用主类

    java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname
    

    ?

    这种类型的调用允许您混合绝对路径和相对路径。把它放到shell脚本或批处理文件中,以避免实际键入或记住完整的类路径来简化操作。

        2
  •  39
  •   gvaish    14 年前

    您可以在jar文件所在的文件夹中创建一个文件夹,比如lib。

    manifest.mf内容可以是:

    Main-Class: com.mastergaurav.test.app.MainClass
    Class-Path: lib/one.jar lib/two.jar
    

    文件夹内容:

    mainFolder/
       * lib/one.jar
       * lib/two.jar
       * my-main.jar
    

    执行:

    java -jar my-main.jar