【问题标题】:Can java.util.ServiceLoader find the new jars added to the classpath without restart?java.util.ServiceLoader 是否可以在不重新启动的情况下找到添加到类路径中的新 jar?
【发布时间】:2018-05-02 03:24:56
【问题描述】:

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

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

【问题讨论】:

    标签: serviceloader


    【解决方案1】:

    解释可以在这里找到Creating Extensible Applications(在教程的最后):

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2020-06-08
      相关资源
      最近更新 更多