Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java9JPMS可以与SPI一起在运行时动态加载插件吗?_Java_Plugins_Spi - Fatal编程技术网

Java9JPMS可以与SPI一起在运行时动态加载插件吗?

Java9JPMS可以与SPI一起在运行时动态加载插件吗?,java,plugins,spi,Java,Plugins,Spi,我有一个需要使用插件的Java8项目。这些JAR可以放在特定的目录中,如果存在,可以由主应用程序使用 计划使用Java 8 SPI实现这一点,如下所述: 到目前为止还不错。但是,我希望能够在运行时获取放置在该目录中的新插件,而无需重新启动应用程序。上面的链接(为Java 8编写)说明: 此外,当前ServiceLoader类无法告诉您的应用程序何时有新的提供程序在运行时可用。此外,您不能将更改侦听器添加到加载程序中,以确定新的提供程序是否已放置到特定于应用程序的扩展目录中 Java9JPMS中

我有一个需要使用插件的Java8项目。这些JAR可以放在特定的目录中,如果存在,可以由主应用程序使用

计划使用Java 8 SPI实现这一点,如下所述:

到目前为止还不错。但是,我希望能够在运行时获取放置在该目录中的新插件,而无需重新启动应用程序。上面的链接(为Java 8编写)说明:

此外,当前ServiceLoader类无法告诉您的应用程序何时有新的提供程序在运行时可用。此外,您不能将更改侦听器添加到加载程序中,以确定新的提供程序是否已放置到特定于应用程序的扩展目录中

Java9JPMS中引入了对此机制的一些更改,包括不需要(源:)在META-INF/services下创建文件来公布实现

所以问题是:迁移到Java9是否能让我在运行时扫描我的插件目录并提供任何新的插件?在Java8中是否还有其他方法可以实现这一点?我知道OSGI,但就我的目的而言,它似乎有些过分了

非常感谢您提供的任何答案/见解