将 ServiceLoader 配置文件放置在 Web 应用程序中的位置

发布于 2024-09-12 23:29:05 字数 298 浏览 5 评论 0原文

我正在 Eclipse 中编写一个 Web 应用程序。

我正在尝试使用 ServiceLoader 类来加载一些插件。

ServiceLoader 的文档说我需要在 META-INF/services 中放置一个文件。

我已将该文件放置在 WebContent/META-INF/service 文件夹中,但是当我通过 Eclipse 运行 JUnit 测试时,它没有找到任何插件。

这是文件的正确位置吗?

另外,如何从 ServiceLoader 获取更多调试信息,例如它正在其中搜索文件的文件夹?

I am writing a web app in Eclipse.

I am trying to use the ServiceLoader class to load some plugins.

The docs for ServiceLoader say I need to place a file in META-INF/services.

I have placed the file in the WebContent/META-INF/service folder but when I run the JUnit test via Eclipse it does not find any plugins.

Is this the correct location for the file?

Also, how can I get more debug info from ServiceLoader such as the folders it is searching for the file in?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪漫之都 2024-09-19 23:29:05

META-INF/services 应该位于用于定位插件的类加载器的类路径中的 jar 文件或资源目录的根目录。

如果您有一个 Web 应用程序,那么您可以具有如下目录结构:

<webappname>/WEB-INF/classes/META-INF/services

但理想的方法是将其放在插件的 jar 文件中。例如,如果您有一个捆绑为 WEB-INF/lib/myplugin.jar 的插件,并且您的插件类是 com.example.plugin.MyPlugin 那么 jar 应该有一个结构:

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin

完成此操作后,您可以使用 Web 应用程序的类加载器获取服务加载器

The META-INF/services should be at the root of the jar file or resource directory in the classpath of the classloader used to locate plugins.

If you have a web application, then you can have directory structure like:

<webappname>/WEB-INF/classes/META-INF/services

But the ideal way is to have it in your plugin's jar file. E.g if you have a plugin bundled as WEB-INF/lib/myplugin.jar, and your plugin class is com.example.plugin.MyPlugin Then the jar should have a structure:

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin

Having done that, you can get a service loader using your web application's class loader

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文