郁闷的问题:No compiler is provided is this environment. Perhaps you are running in a JRE rather than JDK

截图如下:
郁闷的问题:No compiler is provided is this environment. Perhaps you are running in a JRE rather than JDK_第1张图片

出错的时候的使用场景: 我在eclipse时创建了一个maven项目,然后在dos界面直接运行 mvn clean install 或 mvn compile(注:其实运行两个命令,其中的一些步骤是需要编译项目的java文件的,找不到编译器,所以报错了)这些命令。结果:提示上面的错。

字面原因解释大概是当我们在编译一些java文件时,但是找不到对应的编译器。当我们在下载JDK时,其实同时下载了一套JRE。

JDK主要是开发时用的,其中不仅带了编译器(也就是我们用的javac.exe这个东西),还带了执行class文件的运行器(也就会java.exe这个东西)。JRE中仅仅带了执行class文件的运行器(也就是java.exe这个东西)。但是将.java文件编译成.class文件必须有javac.exe这个东西。

根本原因: 你配置的是JRE,而不是JDK。或者你认为你自己配置正确了,但是所用的软件有自己查找路径的方法,和你的配置有出入。

解决办法:

方法一:
改变eclipse的配置,这个也是网上给出的答案。但是我的问题并不是在这里。改变配置截图如下:

点击window —》 点击preferences —-》点击Java —》 点击Installed JREs —》在右边的配置中,改变Location的路径为自己安装的JDK路径或者新增一个路径并设置为默认的路径。

看下面的截图。
郁闷的问题:No compiler is provided is this environment. Perhaps you are running in a JRE rather than JDK_第2张图片

上面就是网上的答案,相信很多人都是这个问题,可惜我的不是这个问题,所以很头疼。。

方法二:
可能是我自己作死。我在我的电脑上安装了三个版本的JDK。
如果只安装一个版本的JDK,传统的环境变量配置如下:

JAVA_HOME = "your java home"
CLASSPATH = "your class path"
PATH = "add new path after old path"

然而呢,因为我安装了三个版本的JDK,就没有配置JAVA_HOME这个变量,我的JAVA_HOEM的变化情况如下:

JAVA6_HOME = "your java6 version home"
JAVA7_HOME = "your java7 version home"
JAVA8_HOEM = "your java8 version home"
//如果想用哪个版本的JDK,我需要改classpath和path对JAVA_HOME引
//用,比如:我想用JAVA6,我把原来的classpath和path中的JAVA_HOME换成JAVA6_HOME。(很蠢的方法。。)

经过上述配置后,mvn内部应该还是找JAVA_HOME,但是我并没找到这样的配置,不知道是不是写死了?(有知道的麻烦告诉我下,谢谢!!)。经过捣鼓,经过下面的重新配置后,一切就正常了。

JAVA6_HOME = "your java6 version home"
JAVA7_HOME = "your java7 version home"
JAVA8_HOME = "your java8 version home"
JAVA_HOME = "写上你想用的java版本,并且不需要修改classpath和path"
//比如: JAVA_HOME = %JAVA8_HOME

方法三:
自己一点点查找原因吧。只要分清楚出错的原因,自然慢慢能定位到出错的地方。

你可能感兴趣的:(java)