Java 在运行时使用清单文件加载JAR

Java 在运行时使用清单文件加载JAR,java,jar,classpath,Java,Jar,Classpath,我继承了一个Java项目,该项目旨在成为多代理开发的平台。其想法是,您可以创建在平台上运行的“应用程序”。我正在寻找一种方法来分发基础平台,这样最终用户可以将应用程序(可能打包在jar中)添加到预定义的文件夹中,将对所述jar存在的引用添加到平台读取的某个清单文件中,从而可以从中访问文件 我已经看到了以下答案,但这些答案似乎要求平台代码在设计时知道类的名称: 理想情况下,我希望以下结构能够正常工作: 主目录:platform.jar、apps.manifest、apps(目录) App

我继承了一个Java项目,该项目旨在成为多代理开发的平台。其想法是,您可以创建在平台上运行的“应用程序”。我正在寻找一种方法来分发基础平台,这样最终用户可以将应用程序(可能打包在jar中)添加到预定义的文件夹中,将对所述jar存在的引用添加到平台读取的某个清单文件中,从而可以从中访问文件

我已经看到了以下答案,但这些答案似乎要求平台代码在设计时知道类的名称:

理想情况下,我希望以下结构能够正常工作:

  • 主目录:platform.jar、apps.manifest、apps(目录)
  • Apps/App1/App1.jar,Apps/App2/App2.jar,…,Apps/AppN/AppN.jar
apps.manifest将包含每个应用程序的条目,其中包括jar的路径以及作为主应用程序(实现公共接口)对象的类的名称

在platform.jar中的主代码中,我想阅读清单,注意有N个应用程序,并且能够调用
ApplicationOne appOne=new ApplicationOne(this)
,其中
ApplicationOne
app1.jar中主要应用程序对象的名称,而
这个
是对
platform.jar
中的对象的引用,它保存了对应用程序的引用

如果所有的jar(
platform.jar
和应用程序jar)都在用户的类路径中,它会像上面那样工作吗?如果是这样的话,有没有办法在Java中临时向用户的类路径添加一个目录(以及所有子目录),我可以在运行
platform.jar
时运行这个目录?我暂时这样问,因为附带的文件夹应该可以在文件系统上移动

任何关于这个问题的建议,以及任何关于改进这个问题的建议,都是值得赞赏的,因此它更清晰、更容易阅读

谢谢

听起来API可能有用

服务是一组众所周知的接口(通常是抽象的) 上课。服务提供者是服务的特定实现。 提供者中的类通常实现接口和 在服务本身中定义的类的子类。服务提供者 可以安装在Java平台的实现中 扩展名,也就是说,将jar文件放入任何常用的 扩展目录


请参阅其用法

如果您的“应用程序”中有注释,这可能会有所帮助: