Exception in thread "main" java.lang.AssertionError 에러 해결
오브젝트 컨버터로 Mapstruct 라이브러리를 활용하는 중에 보통 컴파일 실패시 어떤 추상 메소드에서 어떤 매핑에 실패했는지에 대해서 알려준다.
하지만 어떤 원인인지는 모르겠지만 maven을 활용하면서 굉장히 raw한 에러메시지를 만났고 전혀 어떤 원인에 의한 에러인지 확인할 길이 없었다.
컴파일 에러면 보통 컴파일러가 어느 지점에서 어떤 정확한 사유때문에 컴파일 할 수 없다고 알려주게 되는게 보통 나의 경험이었는데.. 오류를 해결하기가 매우 까다로웠다.
그때, 아래의 스택오버플로우를 발견하여 해결했다.
우선 에러메시지는 아래 참조페이지에서 본것과 마찬가지로 빌드 실패하며 stack을 띄우는데
"C:\Program Files\Java\jdk-14\bin\java.exe" -Dmaven.multiModuleProjectDirectory=C:\Users\plte1219\Desktop\CJM\media_auth -Xmx1024m -XX:MaxPermSize=512m "-Dmaven.home=C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\lib\idea_rt.jar=59675:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\plugins\maven\lib\maven3\boot\plexus-classworlds.license" org.codehaus.classworlds.Launcher -Didea.version2020.1.2 clean package
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< org.engine:engine_auth >-----------------------
[INFO] Building engine_auth 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ engine_auth ---
[INFO] Deleting C:\Users\plte1219\Desktop\CJM\media_auth\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ engine_auth ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] Copying 6 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ engine_auth ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 38 source files to C:\Users\plte1219\Desktop\CJM\media_auth\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.174 s
[INFO] Finished at: 2020-06-25T22:47:39+03:00
[INFO] ------------------------------------------------------------------------
---------------------------------------------------
constituent[0]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/conf/logging/
constituent[1]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/cdi-api-1.0.jar
constituent[2]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/commons-cli-1.4.jar
constituent[3]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/commons-io-2.5.jar
constituent[4]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/commons-lang3-3.8.1.jar
constituent[5]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/guava-25.1-android.jar
constituent[6]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/guice-4.2.1-no_aop.jar
constituent[7]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/jansi-1.17.1.jar
constituent[8]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/javax.inject-1.jar
constituent[9]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/jcl-over-slf4j-1.7.29.jar
constituent[10]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/jsoup-1.12.1.jar
constituent[11]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/jsr250-api-1.0.jar
constituent[12]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-artifact-3.6.3.jar
constituent[13]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-builder-support-3.6.3.jar
constituent[14]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-compat-3.6.3.jar
constituent[15]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-core-3.6.3.jar
constituent[16]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-embedder-3.6.3.jar
constituent[17]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-model-3.6.3.jar
constituent[18]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-model-builder-3.6.3.jar
constituent[19]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-plugin-api-3.6.3.jar
constituent[20]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-repository-metadata-3.6.3.jar
constituent[21]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-api-1.4.1.jar
constituent[22]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-connector-basic-1.4.1.jar
constituent[23]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-impl-1.4.1.jar
constituent[24]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-provider-3.6.3.jar
constituent[25]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-spi-1.4.1.jar
constituent[26]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-transport-wagon-1.4.1.jar
constituent[27]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-resolver-util-1.4.1.jar
constituent[28]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-settings-3.6.3.jar
constituent[29]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-settings-builder-3.6.3.jar
constituent[30]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-shared-utils-3.2.1.jar
constituent[31]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/maven-slf4j-provider-3.6.3.jar
constituent[32]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/org.eclipse.sisu.inject-0.3.4.jar
constituent[33]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/org.eclipse.sisu.plexus-0.3.4.jar
constituent[34]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/plexus-cipher-1.7.jar
constituent[35]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/plexus-component-annotations-2.1.0.jar
constituent[36]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/plexus-interpolation-1.25.jar
constituent[37]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/plexus-sec-dispatcher-1.4.jar
constituent[38]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/plexus-utils-3.2.1.jar
constituent[39]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/slf4j-api-1.7.29.jar
constituent[40]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/wagon-file-3.3.4.jar
constituent[41]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/wagon-http-3.3.4-shaded.jar
constituent[42]: file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202019.3.1/plugins/maven/lib/maven3/lib/wagon-provider-api-3.3.4.jar
---------------------------------------------------
Exception in thread "main" java.lang.AssertionError
at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
at jdk.compiler/com.sun.tools.javac.comp.Modules.enter(Modules.java:247)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.readSourceFile(JavaCompiler.java:836)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ImplicitCompleter.complete(JavacProcessingEnvironment.java:1588)
at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:670)
at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1383)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.complete(Type.java:1157)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.java:1083)
at jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:237)
at jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:52)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:1010)
at jdk.compiler/com.sun.tools.javac.code.Printer.visit(Printer.java:136)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:199)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:167)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:185)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:167)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.getMessage(JCDiagnostic.java:788)
at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.getMessage(ClientCodeWrapper.java:835)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:131)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1134)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:187)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
대략 이렇게 나온다.
참조 : https://stackoverflow.com/questions/62583298/exception-in-thread-main-java-lang-assertionerror
근데 이렇게 나오면 어느 부근에서 컴파일 오류를 유발하는지 모르기 때문에 별도의 설정을 해줘야한다.
(여기서 해당 오류는 maven을 통해 스프링 부트 프로젝트를 compile할 때 발생하는 이슈이다. gradle을 활용할 때 해당 이슈가 발생할 수 있지만 해결방법은 동일하지 않을 수 있다.)
pom.xml 파일에 강제로 컴파일을 할 수 있도록 설정을 해준다.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
</configuration>
</plugin>
이런 설정을 해주니 raw한 오류를 뱉지 않고 mapstruct 관련한 프로퍼티 오류를 내뱉어주었다.
이는 Exception in thread "main" java.lang.AssertionError 에러 메시지를 해결하는 방법이 아닌 어떤 원인에 의해서 해당 오류가 발생할지 확실히 알기 위한 임시방편이지 확인 후 수정했다면 코드를 지워주는 작업을 하자.