Search code examples
javamavenintellij-idea

Intellij Idea build error: NoClassDefFoundError : javax/xml/bind/JAVAXBException


Our company forced me to change to newer Intellij Idea version 2023.1 but I encounter error whenever I try to build our project in Idea:
java: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException javax.xml.bind.JAXBException

I use:
java 8u201
apache maven 3.8.5
environmental variables %JAVA_HOME%, %MAVEN_HOME% and their /bin versions in Path are set

Intellij Idea important settings:
Project Settings -> Project: SDK: 8u201 (which is defined as its %JAVA_HOME% path in PlatformSettings->SDKs)
Settings -> Build, Execution, Deployment -> Build Tools -> Maven: Maven home path: %MAVEN_HOME%
Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Importing: VM options for importer: -Xmx768m, JDK: project JDK

Why I need it working:
I need to run JUnit tests in Intellij which initiates Intellij build automatically and it ends up with the error. So that's why I need the build to work.
I expect issue comes from some Intellij settings or somewhere around Intellij specifically. Also consider please the fact it worked in previous Idea 2022.1.4 without changing the project pom or other project related things.

What I tried:
I tried building project in terminal using mvn clean install and that works.
I tried all three of the magic buttons in the right maven tab in Intellij.
I tried using VM option -XX:+IgnoreUnrecognizedVMOptions from this stack overflow thread:
How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
I tried to remove all caches from %LOCALAPPDATA%\JetBrains
I tried Invalidate caches and restart Intellij (checking all relevant checkboxes)
I tried switching JDK from oracle to amazon version
I tried switching maven 3.8.5 to 3.9.6
I tried removing maven folder from disc C (there is a folder sources are imported to)

Intellij Idea build-log: (using portable JDK 8u211, but it looks identical with logs using Correto 8 or JDK 8u401)

2024-05-02 16:36:12,327 [  29086]   INFO - #o.j.j.i.j.JavaBuilder - java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
java.lang.RuntimeException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:168)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:239)
    at org.jetbrains.jps.incremental.java.JavaBuilder.lambda$compileJava$2(JavaBuilder.java:524)
    at org.jetbrains.jps.incremental.java.JavaBuilder.invokeJavac(JavaBuilder.java:587)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:522)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:366)
    at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:291)
    at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:245)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1553)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1183)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1333)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1148)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:916)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:473)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:196)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:150)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:389)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:214)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:211)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at org.hibernate.jpamodelgen.xml.JpaDescriptorParser.<init>(JpaDescriptorParser.java:77)
    at org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.init(JPAMetaModelEntityProcessor.java:116)
    at org.jetbrains.jps.javac.APIWrappers$ProcessorWrapper.init(APIWrappers.java:190)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.jetbrains.jps.javac.APIWrappers$1.invoke(APIWrappers.java:362)
    at jdk.proxy2/jdk.proxy2.$Proxy26.init(Unknown Source)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:701)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:828)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:924)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1267)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1382)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1234)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:916)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
    ... 23 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 41 more
2024-05-02 16:36:12,335 [  29094]   INFO - #o.j.j.i.Builder - Dependency analysis found 0 affected files
2024-05-02 16:36:12,341 [  29100]   INFO - #o.j.j.i.j.JavaBuilder - javac 17.0.6 was used to compile [core-connector, aop-utils]
2024-05-02 16:36:12,411 [  29170]   INFO - #o.j.j.c.BuildSession - FilePageCache stats: pageHits=0, pageFastCacheHits=268022, regularPageLoads=355, pageLoadsAboveSizeThreshold=0, pageLoadUs=339434, pageDisposalUs=705, capacityInBytes=524288000, disposedBuffers=355 maxRegisteredFiles=61 maxCacheSizeInBytes=38567936totalSizeCachedBytes=0
2024-05-02 16:36:13,195 [      6]   INFO - #o.j.j.c.BuildMain - ==================================================
2024-05-02 16:36:13,230 [     41]   INFO - #o.j.j.c.BuildMain - Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA 2023.1/plugins/java/lib/jps-launcher.jar
2024-05-02 16:36:13,483 [    294]   INFO - #o.j.j.c.BuildMain - Connection to IDE established in 236 ms

Solution

  • I figured out solution. There is option in Settings->Build, Execution, Deployment->Compiler->Java Compiler called Use compiler from module target JDK when possible. When I enabled the option build started behave normally.
    Issue is solved for me.