您的位置:首页 > 编程语言 > Java开发

三个环境变量JAVA_HOME、CLASSPATH、PATH的区别

2018-02-01 17:21 543 查看
背景

写一个脚本执行自动从gitlab拉取代码,并使用mvn 命令编译,出现以下问题:

Detected JDK Version: 1.6.0-14 is not in the allowed range 1.8.

因为项目使用的jdk1.8版本,但是电脑的系统变量使用的java 版本是1.6版本,所以出现了如上的问题。

但是cmd中执行java -version 命令,发现问题 java version 是1.8



出现1.6,是因为mvn 执行的时候,以系统变量为主。还把maven的安装包放在了个人用户的目录下。但是并没有解决问题。也想过用set 命令来修改,但是被耽搁。 也修改过maven的pom文件和setting文件,但都不生效。

还有一种是修改setting.xml
修改profiles这个属性,就可以得到。
<profiles></profiles>

<properties>
<!-- 字符集编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk版本规定 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>


==== 上面两种修改方式的适用场景是?

其实最主要是对JAVA_HOME、CLASSPATH、PATH不了解。

JAVA_HOME

解决办法:

指向的是JDK的安装路径,如C:\Program Files\Java\jdk1.8.0_73 在这路径下你应该能够找到bin、lib等目录。

由于自己电脑的个人用户环境变量没有设置JAVA_HOME,直接把 C:\Program Files\Java\jdk1.8.0_73\bin

C:\Program Files\Java\jdk1.8.0_73\jre\bin 两个路径放在了 PTAH中。 所以使用 java -version 命令得到 1.8的版本。 但是mvn 命令是根据 JAVA_HOME 路径来获取java 版本,所以从系统变量中得到了1.6的版本,爆出上面错误。

解决的办法也就是在个人用户的环境变量中配置,JAVA_HOME = C:\Program Files\Java\jdk1.8.0_73 这样问题就解决了。mvn -v 后,得到1.8版本。

所以新电脑配置环境变量的时候,JAVA_HOME 一定不能少。

CLASSPATH

CLASSPATH 环境变量,指的是类路径。在类加载的时候,需要使用到一般情况下的路径就是如此。不过这个类是加载扩展类或者第三方类。

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

PATH

这个环境变量windows里面就有,很多时候都是往里面添加bin目录。比方说,jdk的bin、git的bin、maven的bin都是可以的。这样在控制台下面编译和执行程序的时候就不需要再键入一大串路径了。添加方法直接在后面加,但很多时候会新建一个相应的路径,再加上bin路径。比方说添加maven的bin,那么会先创建新的MAVEN_HOME ,然后再PATH中添加 %MAVEN_HOME%bin, 这样就可以了。

set 命令修环境变量值

在脚本中,如果某个应用需要临时修改上面三个变量的值,可以使用set命令。 但只在脚本运行的生命周期有效。

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73

set PATH=%JAVA_HOME%\bin;

set CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: