2

我有一个 java 应用程序,它被实现为使用 java.util.serviceLoader 查找接口的提供者。当我在运行时将新的提供程序 jar 添加到应用程序的类路径时,应用程序找不到它。如果我重新启动应用程序,应用程序会找到提供程序 jar。java应用程序是否有任何选项可以在运行时找到提供程序jar,因为我认为这是java serviceLoader应该做的。

我正在按照此页面中的说明进行操作。 http://cr.openjdk.java.net/~mr/jigsaw/spec/api/java/util/ServiceLoader.html 在类路径上部署服务提供者

4

1 回答 1

1

解释可以在这里找到创建可扩展的应用程序(在教程的末尾):

ServiceLoader API 的限制 ServiceLoader API 很有用,但也有限制。例如,不可能从 ServiceLoader 类派生类,因此您无法修改其行为。您可以使用自定义 ClassLoader 子类来更改类的查找方式,但 ServiceLoader 本身无法扩展。此外,当前的 ServiceLoader 类无法告诉您的应用程序何时有新的提供程序在运行时可用。此外,您无法将更改侦听器添加到加载程序以查明是否将新提供程序放置到特定于应用程序的扩展目录中。

似乎适用于Java 8。不知道在以后的版本中是否有所改变。

于 2019-02-22T14:13:52.273 回答