joseph
joseph

Reputation: 2786

ClassNotFoundException when running test in Intellij and maven pom configured with checker framwork

I'm trying to run a unit test in Intellij and I get the below build failure even before it has a chance to run:

java: java.lang.ClassNotFoundException: org.checkerframework.checker.nullness.NullnessChecker
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.checkerframework.checker.nullness.NullnessChecker
    at org.jetbrains.jps.javac.JavacMain.lookupAnnotationProcessors(JavacMain.java:326)
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:233)
    at org.jetbrains.jps.javac.ExternalJavacProcess.compile(ExternalJavacProcess.java:189)
    at org.jetbrains.jps.javac.ExternalJavacProcess.access$400(ExternalJavacProcess.java:28)
    at org.jetbrains.jps.javac.ExternalJavacProcess$CompilationRequestsHandler$1.run(ExternalJavacProcess.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.ClassNotFoundException: org.checkerframework.checker.nullness.NullnessChecker
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at org.jetbrains.jps.javac.LazyClassLoader.findClass(LazyClassLoader.java:58)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at org.jetbrains.jps.javac.JavacMain.lookupAnnotationProcessors(JavacMain.java:308)
    ... 7 more


I have a maven pom file configured with checker framework by following https://checkerframework.org/manual/#maven .

Intellij is configured to load the maven project; however I have disabled 'Delegate IDE build/run actions to Maven'. I do not want to have to enable this. I also do not want to disable or remove checker framework. So how do I workaround this?

Upvotes: 0

Views: 62

Answers (2)

joseph
joseph

Reputation: 2786

Go to Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors

Go thru all projects and make sure 'Enable annotation processing' is unchecked. If you need it enabled for whatever reason, remove org.checkerframework.checker.nullness.NullnessChecker.

For some reason Intellij sets this up using what's in your pom file.

Upvotes: 0

Alex
Alex

Reputation: 661

First try to run test from command line, if it fails fix it. Then try to run it from IDE, if it fails find the difference in environment. IDE adds its own conventions and settings, fix them until test passes

Upvotes: 0

Related Questions