ServiceLoader動態加載實現類,是根據目錄META-INF/services下的配置文件找到實現類的全限定名並調用Classloader來加載實現類到JVM。
程序運行時,並未加載到任何實現類,原因是maven打包的時候沒有把resources/META-INF/services目錄下的文件(以Interface全路徑命名)打包進去,你可以看下項目編譯后的的target目錄,你會發現META-INF.service文件夾不在其中。
解決辦法是在你的服務提供類中的POM文件中加入改路徑下的所有文件,重新打包安裝即可。
1 <resources>
2 <resource>
3 <directory>src/main/resources</directory>
4 <includes>
5 <include>META-INF/services/*.*</include>
6 </includes>
7 </resource>
8 </resources>