java为什么要配置环境变量

1:下载

下载1.8版本现比较稳定,安装目录不要包含中文或者字符(容易有问题)

我们下载jdk之后会有两个文档,一个是jdk,一个是jre

java为什么要配置环境变量_第1张图片
2:目录结构

jdk是开发者,也就是服务端所需,jre是使用者,也就是客户端

当安装了jre,会优先用它的java.exe,默认配置path。当安装jdk,则需要自己配置path,jdk/bin,这个bin里面有编译和运行等指令。

https://www.cnblogs.com/byx1024/p/12345126.html

配置之前先了解jdk,jre,jvm。

(jdk>jre>jvm

JDK

JDK:Java Development Kit,Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac,java,javadoc,jar 等。

JRE

JRE:Java Runtime Environment,Java 运行时环境,主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来一部分的 Java 类库。

JVM

JVM:JAVA Virtual Machine,jvm 是 Java 能够跨平台的核心,实现一次编写,多处运行(write once,run anywhere)

三者关系可用如下图表示(图片转自公众号:狂神说):

JDK、JRE、JVM区别与联系

这三者的关系是:一层层的包含关系。JDK>JRE>JVM

在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

区别: JDK和JRE一个是开发环境,一个是运行环境。在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。 JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。

)

JDK安装路径下的JRE与独立安装的JRE区别_jre安装和不安装的区别_盼超师兄的博客-CSDN博客

原文链接:JDK、JRE、JVM区别与联系_jdk jre jvm_尐鸣的博客-CSDN博客

3:classpath和path

从学习java的最初我们就被要求先设置path变量和classpath变量。但是这两个环境变量到底有什么作用呢?

1.path环境变量

path环境变量的主要作用是告诉操作系统到哪里去寻找某个程序,如果操作系统在当前目录下找不到我们想要执行的程序,就会顺着path环境变量指定的目录去查找。最简单的一个例子,我们安装完jdk以后需要给它设置path变量。一般情况下是这样设置%JAVA_HOME%\bin;其中JAVA_HOME的值是:C:\Program Files\Java\jdk1.8.0_131。其实设置这个path,就是为了告诉系统,要去%JAVA_HOME%\bin这个地方寻找javac.exe,java.exe这两个程序。然后才能运行这两个程序。这就是path环境变量的作用。

2.javac.exe和java.exe。

这两个是java最主要的程序,javac.exe是编译器,用于将java源代码转化为.class文件;java.exe是解释器。运行javax.exe将源代码转换为.class文件,运行java.exe则将.class文件解释执行。这是由java虚拟机(JVM)来完成的。jvm解释执行类的过程比较复杂。包含载入类,校验,运行等。以后有相应的文章整理。

3.classpath环境变量。

classpath变量是告诉JVM到哪里去寻找一个类。也就是在执行java xxxx这个命令的时候去哪里寻找xxxx这个类。记得我们最初安装jdk的时候,同样设置了classpath环境变量,我们设置的值是.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar ,设置这个值的目的是为了告诉JVM,到这个目录下去寻找类。

首先.;这个目录指的是当前目录,即告诉jvm首先到当前目录去寻找类。

如果当前目录找不到,就去%JAVA_HOME%\lib中寻找,还是找不到,就去%JAVA_HOME%\lib\tools.jar寻找。我们在编写程序的时候用到很多jdk的类都需要到lib和tool.jar这两个地方寻找。只有设置了classpath变量,我们才能找到并运行相关的jdk类。

举例来说:

我们再D:/javawork下新建了一个test.java的类,首先,我们要用命令提示符将当前目录定位到D:/javawork下,然后执行javac test.java。此时在D:/javawork文件夹下面就会出现test.class这个文件。接下来我们再D:/javawork下执行java test。因为我们在classpath中设置了.;这个环境变量,jvm就会到当前目录,也就是D:/javawork去寻找test这个类,找到并执行它的代码。

假如找不到,他就得到classpath中设置的其他路径去寻找了。

总之,要运行(载入)一个类,必须到classpath下面去找到它,而classpath是我们可以设置的。

对于具有包名的类,classpath又是如何工作的呢?

假如我写了一个类,它是属于某个包,比如com.xdx.learn。则这个类的全称叫做com.xdx.learn.test。假设这个test.java文件我们目前放在D:/javawork下,此时如果我们采用javac test.java这个命令编译它,还是会在D:/javawork下生产一个test.class文件。

运行java test。失败,提示找不到test类。

这是因为此时类要加上全限定名,即com.xdx.learn.test.

那么运行java com.xdx.learn.test。依然出错,还是找不到com.xdx.learn.test。

正确的做法是,我们依次新建com文件夹,在com文件夹下建xdx文件夹,在xdx文件夹下建立learn文件夹,然后再把test.class这个文件放入learn文件夹下。执行ava com.xdx.learn.test。此时才是成功的。

jvm在装载带有包名的类的时候,会从classpath中找到路径(本例是当前目录,即D:/javawork),然后去寻找顶层包名所对应的的物理目录(本例是com文件夹),然后按照包名的顺序依次寻找对应的目录,在最底层包名中找到test.calss文件。所以classpath的设置一定要指向顶级包名所对应的目录(com文件夹)的父目录(D:/javawork)。而非指向test.calss所在的目录。这一点至关重要。

ps:其实有个小窍门,我们在编译的时候就可以生成包名所对应的的物理目录,只要使用如下命令。javac -d . test.java。就可以生成与包名对应的物理目录。

4.import

import是引入包中的类,比如我们想要用到某个类,但是这个类跟当前的类不在同一个包中,我们就需要使用import关键字。

需要知道的是,你要引入某个类,即使用import去引入,它必须已经被jvm所装载。我们在编写web项目的时候,总是引用很多外部的jar包,有jdk的,有tomcat目录下的,还有web-inf/lib下的。所以我们该知道,在装载我们自己编写的类之前,jvm首先要装载这三个地方的类。否则import就不会起作用了。

jar包是编译后的.class文件打包而成,其下面有包目录,只要我们将classpath设置为包含某一个jar包所在的路径,就可以运行其里面所包含的的类。比如a.jar包下面有com.xdx.learn、com.xdx.study等包,这些包下面又有一些编译好的.class文件。那么把classpath设为a.jar包所在路径,就可以执行com.xdx.learn、com.xdx.study包下的类了。

  https://www.cnblogs.com/roy-blog/p/7679484.html

配置path

环境变量的配置

鼠标右键 我的电脑(此电脑) - 属性 - 高级系统设置 再选择 环境变量

java为什么要配置环境变量_第2张图片

如果电脑桌面没有我的电脑,可以创建一个文件夹,点进去就能看到,或者使用 dos 命名 :win + R 再输入 cmd 回车

打开命令窗口 输入explorer 回车,就会弹出文件资源管理器的窗口,优雅的找到 我的电脑(此电脑)

2.1 Java_Home 配置

点击 环境变量 进来大概是这样子的,点击 新建

java为什么要配置环境变量_第3张图片

添加配置:

变量名:Java_Home

变量值:jdk 的安装目录 ,可以点击游览目录选择

java为什么要配置环境变量_第4张图片

新建好了,点击 确定 保存

2.2 Path 配置

同时还需要添加 Path 的 配置,选择 Path ,点击 编辑 ,可能会看到两种情况

情况一:

新建 两个环境变量

变量1:%Java_Home%\bin

java为什么要配置环境变量_第5张图片

一般我们会将它上移到顶部,再 确定 保存

2.3 CLASSPATH 配置

其实之前我是从来都没有配置过 ClassPath 的,感觉也没什么影响,这一步做了肯定比没做好,但是为什么要配置 ClassPath?可参考下该博客:配置JAVA环境变量中CLASSPATH变量的作用_java配置classpath的作用_喜欢路飞的银桑的博客-CSDN博客

点击 新建

添加配置:

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

点击确定,保存

好了,java 在 windows 环境下的环境配置就完成了

3、检测是否配置成功

使用 dos 命名 :win + R 再输入 cmd 回车

打开命令窗口 输入java 回车

输入javac 回车

如果都有打印一些信息的话就表示 java 的环境配置已经成功了

如果想要查看当前系统的全局 jdk 版本,可输入 java -version 命令查看

原文链接:java 环境配置(详细教程)_java环境配置_多加点辣也没关系的博客-CSDN博客

新版jdk classpath不需要再配置了

从Java5开始CLASSPATH默认就是当前路径,一般情况下就不需要再设定了。若使用Java5以前的版本,需要设置环境变量CLASSPATH为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

其中dt.jar是关于java运行环境的类库;tools.jar是工具类库;

在java5中,sun公司改进了JDK设计,JRE会自动搜索当前路径下的jar包,并自动加载dt.jar和tools.jar。所以从Java5开始,就不必再设置CLASSPATH环境变量了。网上有很多的教程在安装java时都会要求设置CLASSPATH环境变量,所以在这里纠正下,java 5 以及以后的java版本都不需要再设置了。

转载自:「JAVA」 Java基础之CLASSPATH环境变量 - 知乎

你可能感兴趣的:(java)