SPI does not work in Java projects using JPMS, since module-info.java does not contains any provides directive.
To reproduce, I created a Java project with:
module-info.java
module foo {
requires com.fasterxml.jackson.core;
uses com.fasterxml.jackson.core.JsonFactory;
}
main
public static void main(String[] args) {
Optional<JsonFactory> jf = ServiceLoader.load(JsonFactory.class).findFirst();
System.out.println(jf.isPresent()); // --> false
}