首页 > 解决方案 > Java - ServiceLoader - Intellij 找不到实现类文件

问题描述

介绍

我正在尝试创建多个对输入进行模糊测试的服务(出于测试目的。我正在使用依赖注入的概念java.util.ServiceLoader<T>。我在这个项目中使用 IntelliJ。

Github 项目链接:https ://github.com/ghoshabhi/java-service-loader

问题

我创建了一个META-INF/services目录,其中包含一个文件:htmlfuzzing.spi.HtmlFuzzer提及我的实现类 ( htmlfuzzing.TagReplacer) 的路径。我试图创建一个类似于Oracle 网站上的示例的结构。

我还继续将META-INF目录标记resourcesProject Settings > Modules

在此处输入图像描述

这是我的output目录的样子:

在此处输入图像描述

正如您在上面看到的,实现类的类文件没有添加到out/目录中。

这是我的完整目录结构:

在此处输入图像描述

问题

我显然在这里做错了什么,但我无法理解是什么。META-INF将目录添加或标记为resources的正确方法是什么,或者包含所有服务实现类的正确方法是什么?

任何有关解决此问题的帮助或提示表示赞赏。

编辑 - 1

添加src/resource文件夹并将META-INF目录放在其中。但是我仍然没有在out目录中看到实现类的类文件。

此外,我注意到的一件事是,一旦我将任何目录标记为resource项目结构中的目录 - 它就会从左侧的项目视图中消失。有什么奇怪的地方吗?

在此处输入图像描述

标签: javaintellij-ideaserviceloader

解决方案


推荐阅读