mapstruct / mapstruct/mapstruct
Mapstruct compilation error with freemarker and unsafe messages
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 7.7k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
See rare build issues related with mapstruct that I'm not able to reproduce, any hint is welcome.
My project contains many modules, a few of them use Mapstruct and it's also random which will fail.
Environment:
It happened several times with maven and gradle. Multiple versions of mapstruct affected (1.4.2, 1.4.1, 1.3.1) It's openJDK11, build is running on Bamboo, artifactory used in project.
1.4.2 error:
Internal error in the mapping processor: java.lang.ExceptionInInitializerError at org.mapstruct.ap.internal.writer.ModelWriter.(ModelWriter.java:51)
Then a lot of lines and:
java.lang.RuntimeException: Failed to load and parse freemarker/version.properties at org.mapstruct.ap.shaded.freemarker.template.Configuration.(Configuration.java:194) ... 196 more Caused by: java.util.zip.ZipException: ZipFile closed at java.base/java.util.zip.ZipFile.ensureOpenOrZipException(ZipFile.java:924) at java.base/java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:1012) at java.base/java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:468) at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:159) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:133) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107) at java.base/java.util.Properties$LineReader.readLine(Properties.java:498) at java.base/java.util.Properties.load0(Properties.java:416) at java.base/java.util.Properties.load(Properties.java:404) at org.mapstruct.ap.shaded.freemarker.template.Configuration.
1.3.1 errors:
error: Internal error in the mapping processor: java.lang.ExceptionInInitializerError at org.mapstruct.ap.shaded.freemarker.ext.beans.ClassIntrospector.isAllowedToExpose(ClassIntrospector.java:534)
Then
error 02-Apr-2020 14:26:15 STDERR: 02) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalStateException: zip file closed at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:915) at java.base/java.util.zip.ZipFile.getEntry(ZipFile.java:347) at java.base/java.util.zip.ZipFile$1.getEntry(ZipFile.java:1121) at java.base/java.util.jar.JarFile.getEntry0(JarFile.java:576) at java.base/java.util.jar.JarFile.getEntry(JarFile.java:506) at java.base/sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:131) at java.base/sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:137) at java.base/sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:155) at java.base/java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:328) at java.base/java.lang.Class.getResourceAsStream(Class.java:2650) at org.mapstruct.ap.shaded.freemarker.ext.beans.UnsafeMethods.createUnsafeMethodsSet(UnsafeMethods.java:45) at org.mapstruct.ap.shaded.freemarker.ext.beans.UnsafeMethods.(UnsafeMethods.java:34)
Similar error with the same start, but second part looks like:
at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.RuntimeException: Could not load unsafe method null java.io.IOException Stream closed at org.mapstruct.ap.shaded.freemarker.ext.beans.UnsafeMethods.createUnsafeMethodsSet(UnsafeMethods.java:82) at org.mapstruct.ap.shaded.freemarker.ext.beans.UnsafeMethods.(UnsafeMethods.java:34)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by examining the reported entry points ModelWriter.java:51, Configuration.java:194, UnsafeMethods.java:45 and UnsafeMethods.java:82, focusing on how resources are accessed during Maven and Gradle annotation processing. Try to isolate the failure in a multi-module build and confirm a fix by eliminating the ZipFile, jar stream, or resource-loading errors across the reported MapStruct versions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100