Java 应用加载外部 jar

Java Application loading external jar

我即将编写一个 java 应用程序,它能够从包含扩展 .jar 文件的外部目录加载扩展功能。我试图在 MANIFEST.MF 文件的 Class-Path 属性 中指定外部目录,但不幸的是(根据 Oracle 的规范)不支持/禁止使用通配符加载 .jar 文件。

只要主应用程序 jar 中有清单文件,使用 -classpath 选项就不起作用。

有没有人知道我该如何解决这个问题。我还有另一种可能性来指定外部 .jar 目录(通过配置 file/setting 或在程序中)。谢谢

实现你自己的ClassLoader,它可以简单地扩展URLClassLoader并将扩展目录的URL添加到类加载器实例。

我总是以这种方式将外部库放在 jar 应用程序的目录中:

   dir
   |-myapp.jar
   └ lib
      |-mylib.jar
      └ log4j-1.2.14.jar 

然后我在库中为我的应用程序列出 MANIFEST.MF:

Class-Path: lib/mylib.jar lib/log4j-1.2.14.jar