mapstruct / mapstruct/mapstruct
Mapstruct compilation error with freemarker and unsafe messages
还没有人认领这个 Issue。
- 主要语言
- Java
- 星标
- 7.7k
- 派生
- 1.1k
- PR 合并指标
- 30 天内没有已合并 PR
描述
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)
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先检查报告中的入口点 ModelWriter.java:51、Configuration.java:194、UnsafeMethods.java:45 和 UnsafeMethods.java:82,重点关注 Maven 和 Gradle 注解处理期间如何访问资源。尝试在多模块构建中隔离故障,并通过消除报告的 MapStruct 版本中与 ZipFile、jar stream 或资源加载相关的错误来确认修复有效。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- build-system
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100