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

2023-11-21

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

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

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

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

这是文件的正确位置吗?

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


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 应用程序的类加载器来获取服务加载器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何使用数据库中的数据填充 JavaFX ChoiceBox?

    private void initialize loadPersistenceContext List
  • ReactJS - 需要单击两次才能设置状态并运行函数

    以下是我的 React 组件中的代码摘要 getInitialState function return link onClick1 function this setState link Link1 this otherFunction
  • 如何验证数组?

    我正在尝试使用敲除验证库验证对象数组 对我来说 如何为一组可观察值形成验证组并不简单 我设法让它发挥作用的唯一方法是这样的 包含 JSFIDLE var Note function var self this self name ko ob
  • 将 MySQL UTF8 迁移到 UTF8MB4 问题和疑问

    我正在尝试将 UTF8 MySQL 5 5 30 数据库转换为 UTF8MB4 我看过这篇文章https mathiasbynens be notes mysql utf8mb4但有一些问题 我已经做了这些 ALTER DATABASE d
  • 在 Java 中单击按钮在 JPanel 中画一条线

    我想在 JPanel 中画一条线 这是我的 GUI 我希望 JPanel 中有一条白色的线 我找到了很多例子 但问题是如何使用它 在许多示例中 他们总是在从 JPanel 扩展的 JFrame 中绘制 我想将面板添加到框架中 并添加一些按钮
  • 使用 Oracle PL/SQL 中的 Web 服务

    如今 我们的应用程序正在与许多 Web 服务进行交互 我们有自己的包 几年前有人使用 UTL HTTP 编写了它 它通常可以工作 但需要对 SOAP 信封进行一些硬编码才能与某些系统一起工作 我想让它更通用 但缺乏经验来知道我必须处理多少场
  • Twitter Bootstraps config.json - 它有什么作用?

    我正在尝试找到一种方法来仅包含特定的引导程序部分 css 或 js 但到目前为止 我只是写下了我正在使用的内容的列表 然后在其定制器页面上勾选这些框 然而我注意到一个config jsonzip 文件中下载的文件 它有什么作用 我目前使用b
  • 为 Primefaces 多选数据表实现动态上下文菜单

    我有一个带有上下文菜单的分页 PrimeFaces 数据表 我希望实现多选 其中上下文菜单中的菜单项将取决于所选项目的数量 因为某些操作仅在仅选择一个项目时才可用 其他选择一项或多项后才有效 我的第一个想法是使用各个菜单项的 渲染 选项 该
  • shell 脚本的漂亮打印

    我正在寻找类似的东西indent但对于 bash 脚本 仅控制台 无着色等 你知道其中之一吗 Vim 可以缩进 bash 脚本 但在缩进之前不要重新格式化它们 备份你的bash脚本 用vim打开它 输入gg GZZ和缩进将被纠正 不耐烦的人
  • 在 Excel 2007 中编写 VBA 以在 Excel 2003 中使用

    我所在的开发人员已经更新到 Excel 2007 但大多数用户还没有 我正在为需要包含一些 vba 代码的用户构建一个电子表格模板 xlt 我想知道在 2007 年而不是 2003 年构建此模板时可能会遇到哪些问题 我无法使用装有 Exce
  • 如何使用 python 运行 Hello world C++ 代码

    我想知道如何创建运行 C 代码的 python 脚本 我确实找到了一些关于子进程模块的讨论 但它用于运行命令 我确实找到了一些关于 Boost 和 Swig 的讨论 但作为初学者我不明白如何使用它们 测试子流程 import subproc
  • 如果 Node 必须具有与客户端节点相同的可加载模块,那么 Erlang 上的 Spawn(Node, Fun) 有何意义?

    为什么要制造出您正在向远程节点发送 Fun 以在新进程中执行的错觉 无论如何 如果客户端节点必须具有可加载的相同模块 并且 Fun 定义为服务器节点 为什么不仅是spawn Node M F A 这清楚地表明您正在发送函数调用的定义 而不是
  • WPF 无模式对话框呈现文本框不可编辑

    我从 WinForms 窗口启动的 WPF 表单在作为无模式对话框启动时显示所有文本框均不可编辑 当它是模态窗口时效果很好 我仍然可以输入空格或粘贴文本 但常规打字不起作用 我使用的是 3 5 SP1 有人知道如何解决这个问题吗 您需要确保
  • 如何通过命令行/shell脚本从etc/wpa_supplicant/wpa_supplicant.conf删除网络配置文件

    我的 etc wpa supplicant wpa supplicant conf 中保存了多个 wifi 网络 ssid 如下所示 我们可以从此 wpa supplicant conf 中删除特定网络吗 例如 在下面的网络中 可以通过 s
  • HTML Tidy 关闭标签后新的空行

    当我使用Coda 中整洁的 HTML很干净 但我不喜欢空行 ul li li li li ul 我尝试编辑配置但没有成功 config file for Coda PHP Toolkit Tidy FORMAT script http ww
  • Pygame AttributeError:“模块”对象没有属性“复制”

    我遇到了Error module object has no attribute copy 运行 pygame 程序时 在我的代码中 我从未引用过复制属性 因此我不明白错误来自何处 我认为你的目录中有一个名为 copy 的python 文件
  • Python 中的费舍尔线性判别式

    我有渔夫线性判别式 我需要用它来将高维矩阵的示例 A 和 B 简化为简单的二维矩阵 这与 LDA 完全相同 每个示例都有 A 类和 B 类 因此如果我有第三个例如 它们也有 A 类和 B 类 第四个 第五个和第 n 个例子总是有 A 类和
  • 如何在 Windows Phone 7 中突出显示上下文相关搜索的结果?

    我需要根据 Windows Phone 7 文本框中输入的文本突出显示搜索结果 通常的 wpf 代码在 Windows Phone 7 中不起作用 有人说如何在 Windows Phone 7 中实现这一点 实际上这是我用来填充联系人列表的
  • 从边界点创建闭合多边形

    I have an array of longitude latitude points that defines the boundaries of an area I would like to create a polygon bas
  • 将 ServiceLoader 配置文件放置在 Web 应用程序中的位置

    我正在 Eclipse 中编写一个 Web 应用程序 我正在尝试使用 ServiceLoader 类来加载一些插件 ServiceLoader 的文档说我需要将文件放在 META INF services 中 我已将该文件放置在 WebCo