亲测多种方案解决Error:java: System Java Compiler was not found in classpath

时间:2024-04-02 20:58:22

最近由于工作原因,需要重新配置Java的开发环境,采用Spring boot开发一个项目,鉴于团队的情况,开发工具也换成了intelli IDEA,因此也遇到一些以前未遇到过的问题。

采用MAVEN在导入项目后,build项目时总是遇到javac的问题,编译时找不到对应的类。

Error:java: System Java Compiler was not found in classpath:
java.lang.ClassNotFoundException: com.sun.tools.javac.api.JavacTool
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.jetbrains.jps.builders.impl.java.JavacCompilerTool.createCompiler(JavacCompilerTool.java:70)
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:63)
    at org.jetbrains.jps.javac.ExternalJavacProcess.compile(ExternalJavacProcess.java:196)
    at org.jetbrains.jps.javac.ExternalJavacProcess.access$400(ExternalJavacProcess.java:48)
    at org.jetbrains.jps.javac.ExternalJavacProcess$CompilationRequestsHandler$1.run(ExternalJavacProcess.java:263)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

大概的报错信息如上所示,大意就是编译时无法找到java的编译工具。

本人在百度上也查了许久,尝试了几种方案,但是最后还是不了了之。经过长时间的尝试,这里大概分享几种思路,注意哈,只是思路,条条道路通罗马,每个人的情况都有些区别,不一定会适合每个人。

  • 第一种方法,找到其他人的repository,其路径可以查看IDEA的配置信息里的路径,一般为默认路径,然后将可以正常使用的repository拷贝到自己对应的目录下即可,也可以像我一样新建文件夹作为特定的依赖包仓库,我这里命名为“c”。

亲测多种方案解决Error:java: System Java Compiler was not found in classpath

在创建好新的仓库之后,就可以将IDEA的编译环境的对应目录修改为“Mavenrepository”了。具体可以看自己的配置信息。

亲测多种方案解决Error:java: System Java Compiler was not found in classpath

如上图所示,修改对应的Local repository即可。

  • 第二种方法,也是不少人推荐的,将IDEA的complier编译器修改为Eclipse模式,由于项目特殊性,修改为Eclipse模式也没用,大家可以根据自己情况进行尝试。
  • 第三种,也是最后根治我的问题的,在尝试了配置JAVA-HOME等环境变量无效之后,在import项目的时候,重新设置了JDK的版本,并且重新下载1.8的JDK,结果很神奇地发现可以正常编译了,非常nice。时间有限,这里简单记录一下解决的思路,大家可以参考,作为平常解决问题的方法之一。