diff --git a/sdk-core/src/main/java/dev/restate/sdk/core/RestateEndpoint.java b/sdk-core/src/main/java/dev/restate/sdk/core/RestateEndpoint.java index f8d37b3f3..93cb85ed9 100644 --- a/sdk-core/src/main/java/dev/restate/sdk/core/RestateEndpoint.java +++ b/sdk-core/src/main/java/dev/restate/sdk/core/RestateEndpoint.java @@ -223,10 +223,21 @@ private static class ServiceDefinitionFactoryDiscovery { private final List<ServiceDefinitionFactory> factories; private ServiceDefinitionFactoryDiscovery() { - this.factories = - ServiceLoader.load(ServiceDefinitionFactory.class).stream() - .map(ServiceLoader.Provider::get) - .collect(Collectors.toList()); + this.factories = new ArrayList<>(); + + var serviceLoaderIterator = ServiceLoader.load(ServiceDefinitionFactory.class).iterator(); + while (serviceLoaderIterator.hasNext()) { + try { + this.factories.add(serviceLoaderIterator.next()); + } catch (ServiceConfigurationError | Exception e) { + LOG.debug( + "Found service that cannot be loaded using service provider. " + + "You can ignore this message during development.\n" + + "This might be the result of using a compiler with incremental builds (e.g. IntelliJ IDEA) " + + "that updated a dirty META-INF file after removing/renaming an annotated service.", + e); + } + } } private @Nullable ServiceDefinitionFactory discoverFactory(Object service) {