gpt4 book ai didi

java - 编写模块化 Java 应用程序

转载 作者:行者123 更新时间:2023-12-01 08:56:13 26 4
gpt4 key购买 nike

我有一个具有以下结构的项目:

+---main
| \pom.xml
+---module1
| \pom.xml
+---module2
| \pom.xml
+---module3
| \pom.xml
+---module4
| \pom.xml
+---pom.xml

模块使用ServiceLoader机制来注册他们的服务。主类位于 main 模块中,该模块还负责使用 ServiceLoader 机制将服务加载到类路径中。问题是 main 模块不知道 module1module2module3module4 因为它们是由用户独立安装的。我想做的是在启动程序时将这些模块中的所有类添加到类路径中,以便 ServiceLoader 知道这些模块中的服务。

目前,我在运行时从 main 模块加载这些模块,但这似乎不是解决此问题的好方法,因为 IDE 不了解这些模块,而且似乎在运行时加载这些模块需要更多时间。我研究了 Elasticsearch 和 PrestoDB 等模块化 Java 项目如何处理这个问题,但它们似乎都在运行时加载已安装的模块。

在开发模块化 Java 应用程序时,您如何处理这个问题?假设我有一个名为 plugins 的目录,其中包含用户安装的模块的 jar 文件,是否有任何方法可以使用 maven 插件使用包含该目录中所有 jar 的类路径启动应用程序?还是我必须在运行时加载这些 jar?

最佳答案

通常,用户将从脚本(或在带有一些可配置的 java exe 启动器的 Windows 中)启动应用程序。在脚本中,您可以简单地将插件文件夹添加到您的类路径中,方式与此类似:

java -cp plugin/* -jar app.jar

关于java - 编写模块化 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30140697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com