Mapstruct 和 InteliJ - 在“构建项目”期间有时会出现继承字段的异常

问题描述 投票:0回答:1

问题:

我们有一个类扩展了另一个类并继承了一些字段。 maven 中的

clean install
工作正常,并且正在生成
impl
映射器类。

有时其他人(学生等)更改了映射器,我注意到 InteliJ 中的

build/make project
正在损坏。

我收到一个错误,例如以下堆栈跟踪:

    Error:(12, 8) java: Internal error in the mapping processor: java.lang.NullPointerException            at
 org.mapstruct.ap.internal.model.source.SourceReference.copyForInheritanceTo(SourceReference.java:333)  at
 org.mapstruct.ap.internal.model.source.Mapping.copyForInheritanceTo(Mapping.java:462)      at
 org.mapstruct.ap.internal.model.source.MappingOptions.applyInheritedOptions(MappingOptions.java:279)     at
 org.mapstruct.ap.internal.processor.MapperCreat
ionProcessor.mergeInheritedOptions(MapperCreat
ionProcessor.java:457)                  at
 org.mapstruct.ap.internal.processor.MapperCreat
ionProcessor.getMappingMethods(MapperCreat
ionProcessor.java:274)                  at
 org.mapstruct.ap.internal.processor.MapperCreat
ionProcessor.getMapper(MapperCreat
ionProcessor.java:152)                  at
 org.mapstruct.ap.internal.processor.MapperCreat
ionProcessor.process(MapperCreat
ionProcessor.java:123)                  at
 org.mapstruct.ap.internal.processor.MapperCreat
ionProcessor.process(MapperCreat
ionProcessor.java:80)                  at
 org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:280)    at
 org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:260)              at
 org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:226)      at
 org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:162)         at
 com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)         at
 com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)                  at
 com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)                  at
 com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)          at
 com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)      at
 com.sun.tools.javac.main.JavaCompiler.processAnnotat
ions(JavaCompiler.java:1170)  at
 com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)              at
 com.sun.tools.javac.main.Main.compile(Main.java:523)                at
 com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)  at
 com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)         at

这就是 jetbrains 的部分所在:

 org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:190)                 at
 org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:483)             at
 org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:339)     at
 org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:256)      at
 org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:214)           at
 org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1263)  at
 org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:940)            at
 org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1012)               at
 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:903)           at
 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:736)              at
 org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:384)      at
 org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:192)             at
 org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)                  at
 org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:295)                  at
 org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)            at
 org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)               at
 org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)                  at
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)       at
 java.util.concurrent.FutureTask.run(FutureTask.java:266)            at
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     at
 java.lang.Thread.run(Thread.java:745)  

问题:

那么,我需要对 InteliJ 进行某种类型的配置更改吗???

当前解决方法:

现在对我有用的是转到

Spring Boot Run Configuration
并在
Before Launch: Activate tool window
部分我做了更改。

我已经删除了

Build Project
。所以使用maven生成的
target directory
。 Inteli J make 命令仅用于重建和热交换更改的类。

java maven intellij-idea mapstruct
1个回答
0
投票

我收到了相同的错误消息,并通过更改 Intelij 配置解决了问题。

转到文件 -> 设置 -> 编译器。在字段

用户本地构建过程 VM 选项(覆盖共享选项)
中输入 -Djps.track.ap.dependencies=false。应用更改并重试。

© www.soinside.com 2019 - 2024. All rights reserved.