有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在web应用程序中放置ServiceLoader配置文件的位置

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

我试图使用ServiceLoader类来加载一些插件

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

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

这是文件的正确位置吗

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


共 (1) 个答案

  1. # 1 楼答案

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