diff --git a/inject-generator/pom.xml b/inject-generator/pom.xml
index 15f926b4..204403ec 100644
--- a/inject-generator/pom.xml
+++ b/inject-generator/pom.xml
@@ -55,7 +55,7 @@
1.5
test
-
+
io.avaje
avaje-http-client
diff --git a/inject-generator/src/main/java/io/avaje/inject/generator/ExternalProvider.java b/inject-generator/src/main/java/io/avaje/inject/generator/ExternalProvider.java
index 077851d2..cca10b4c 100644
--- a/inject-generator/src/main/java/io/avaje/inject/generator/ExternalProvider.java
+++ b/inject-generator/src/main/java/io/avaje/inject/generator/ExternalProvider.java
@@ -24,6 +24,7 @@
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.ModuleElement;
+import javax.lang.model.element.ModuleElement.ProvidesDirective;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.ElementFilter;
@@ -318,13 +319,22 @@ private static Stream injectExtensions() {
final var checkDirectives =
allModules.stream()
- .flatMap(m -> ElementFilter.providesIn(m.getDirectives()).stream())
+ .flatMap(ExternalProvider::providesDirectives)
.filter(ExternalProvider::isInjectExtension)
.flatMap(p -> p.getImplementations().stream());
return Stream.concat(checkEnclosing, checkDirectives);
}
+ // Automatic modules throw an NPE for getDirectives on JDT
+ private static Stream providesDirectives(ModuleElement m) {
+ try {
+ return ElementFilter.providesIn(m.getDirectives()).stream();
+ } catch (NullPointerException npe) {
+ return Stream.of();
+ }
+ }
+
// when a project's module-info is misconfigured a certain way, getEnclosedElements throws an error
private static Stream extends Element> getEnclosed(Element e) {
try {