警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

说明

主要参考了这位大佬的文章:https://www.cnblogs.com/xxjcai/p/java_compiler.html

不过我是在使用IDEA的时候遇到的问题,所以我这里介绍一下在IDEA中的解决方案。

错误信息

.\src\main\java\com\xiao\designpattern\dynamicproxy\TimeProxy.java:6: 警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassDefFoundError: com/sun/tools/javac/processing/JavacProcessingEnvironment
class TimeProxy implements Flyable {
^
      at lombok.javac.apt.LombokProcessor.getJavacProcessingEnvironment(LombokProcessor.java:419)
      at lombok.javac.apt.LombokProcessor.init(LombokProcessor.java:90)
      at lombok.core.AnnotationProcessor$JavacDescriptor.want(AnnotationProcessor.java:124)
      at lombok.core.AnnotationProcessor.init(AnnotationProcessor.java:177)
      at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.init(AnnotationProcessor.java:73)
      at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:500)
      at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:597)
      at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:690)
      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.processAnnotations(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 com.xiao.designpattern.dynamicproxy.JavaCompiler.compiler(JavaCompiler.java:19)
      at com.xiao.designpattern.dynamicproxy.Proxy.newProxyInstance(Proxy.java:62)
      at com.xiao.designpattern.dynamicproxy.Test.main(Test.java:10)
  Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.processing.JavacProcessingEnvironment
      at java.lang.ClassLoader.findClass(ClassLoader.java:530)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      at lombok.launch.ShadowClassLoader.loadClass(ShadowClassLoader.java:530)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      ... 19 more
1 个警告

解决方案

1、

警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

2、

警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

这里1.8版本的SDK是我现在项目在用的SDK,查看右侧的ClassPath,发现没有tools.jar,所以第三步就需要添加tools.jar

3、

警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

4、再次运行程序,程序已经能够正常运行。

 

(有啥问题可以在留言)