reflections: java.lang.IllegalStateException: zip file closed

When using version 9.12 on kubernetes 1.15 with spring boot 2.2.4 we get following error. When using version 9.11 we do not have this issue.

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [x.x.x.SerializedTypeNameResolver]: Factory method 'serializedTypeNameResolver' threw exception; nested exception is java.lang.IllegalStateException: zip file closed
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.3.RELEASE.jar!/:5.2.3.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) ~[spring-beans-5.2.3.RELEASE.jar!/:5.2.3.RELEASE]
	... 95 common frames omitted
Caused by: java.lang.IllegalStateException: zip file closed
	at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:915) ~[na:na]
	at java.base/java.util.zip.ZipFile.stream(ZipFile.java:647) ~[na:na]
	at java.base/java.util.zip.ZipFile$1.stream(ZipFile.java:1131) ~[na:na]
	at java.base/java.util.jar.JarFile.stream(JarFile.java:534) ~[na:na]
	at org.reflections.vfs.ZipDir.lambda$getFiles$2(ZipDir.java:21) ~[reflections-0.9.12.jar!/:na]
	at org.reflections.Reflections.scan(Reflections.java:260) ~[reflections-0.9.12.jar!/:na]
	at org.reflections.Reflections.scan(Reflections.java:216) ~[reflections-0.9.12.jar!/:na]
	at org.reflections.Reflections.<init>(Reflections.java:137) ~[reflections-0.9.12.jar!/:na]
	at org.reflections.Reflections.<init>(Reflections.java:182) ~[reflections-0.9.12.jar!/:na]
	at org.reflections.Reflections.<init>(Reflections.java:155) ~[reflections-0.9.12.jar!/:na]
	at x.x.x.serializedTypeNameResolver.getTypesForName(SerializedTypeNameResolver.java:44) ~[integration-axondb-11.369.0.jar!/:11.369.0]
	at x.x.x.serializedTypeNameResolver.<init>(GSerializedTypeNameResolver.java:23) ~[integration-axondb-11.369.0.jar!/:11.369.0]
	at x.x.x.serializedTypeNameResolver(AxonServerSharedConfiguration.java:115) ~[integration-axondb-11.369.0.jar!/:11.369.0]

Our config is as follows:

private Map<String, Class<?>> getTypesForName() {
        Reflections reflections = new Reflections("x.x.x");
        return reflections.getTypesAnnotatedWith(JsonTypeInfo.class).stream()
            .map(clazz -> clazz.getAnnotationsByType(JsonSubTypes.class))
            .flatMap(Arrays::stream)
            .flatMap(annotation -> Arrays.stream(annotation.value()))
            .filter(type -> isValidType(type.value()))
            .collect(toMap(JsonSubTypes.Type::name, JsonSubTypes.Type::value, (name1, name2) -> name1));
    }

“edit” It runs on adoptOpenJdk 11.0.6_10

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Reactions: 26
  • Comments: 23 (1 by maintainers)

Commits related to this issue

Most upvoted comments

#me_too --> downgraded to 0.9.11 as suggested.

This seems to have been fixed now in Spring boot 2.3.6.RELEASE

  • “java.lang.IllegalStateException: zip file closed” when call JarFileWrapper.stream() of spring-boot-loader #23821

https://github.com/spring-projects/spring-boot/releases/tag/v2.3.6.RELEASE

Could this be related to multi threading issue that’s been around since 0.9.10 and described in https://github.com/ronmamo/reflections/issues/81? A common “solution” is to downgrade to 0.9.9 until it’s fixed. 😦

I have checked different versions of Spring and I can confirm what @bmaehr already mentioned. The library throws this exception when it is used with spring-boot of version 2.3.5 or earlier. Switching to 2.3.6 solves the issue. With the latest spring-boot version 2.7.4 it also works.

Spring framework ticket related to this issue: spring-projects/spring-boot#23821

0.9.11 has the same error popping up for us randomly (we are not using spring), with exactly same message. Could it be that there is something unfortunate in openjdk 11? We are mixing things built with java 11 and java 8, don’t know if this is important.

This seems to have been fixed now in Spring boot 2.3.6.RELEASE

  • “java.lang.IllegalStateException: zip file closed” when call JarFileWrapper.stream() of spring-boot-loader #23821

https://github.com/spring-projects/spring-boot/releases/tag/v2.3.6.RELEASE

As far as I understood spring fixed a similar problem, but not the same. At least I still have the problem with spring-boot 2.4.0 and reflections 0.9.12. Downgrading to 0.9.11 solves it.

This is still an issue, I also had to downgrade to 0.9.11, is there something we can do to help figure this out ?

Facing the same issue … any updates?

I got the same issue when running a packed jar from spring boot, but starting the same application from the source-code with maven spring plugin, run without any related issue