为什么要配置环境变量(深析)

简介: 为什么要配置环境变量(深析)

为什么要配置环境变量(深析)

前言:大家学习java首先听到的就是jdk,配置环境变量,当时我听到这个也一脸雾水,这是个什么东西,当时就稀里糊涂跟着老师一步步下载安装,弄好了也不知道是干嘛的,留下了很多问题,接下来就来解决这些问题

·JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

·JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。

·JVM:Java虚拟机,运行Java代码

Java的安装包分为两类,一类是JRE其就是一个独立的Java运行环境; 一类是JDK其是Java的开发环境,不过在JDK的发布包中包含了一个独立的JRE,另外需要注意JDK本身就内置有JRE。

java程序是如何运行起来的呢

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

注意:在运行Java程序前,必须先安装好JDK(Java Development Kit即Java开发工具包),JDK里面就包含了javac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。

·问题:当我们安装jdk后没有进行环境变量配置,在你安装jdk的目录下的bin目录下打开命令行是可以执行java命令的,而在别的目录不可以执行java命令。

·原因:这是因为我们执行java命令需要开发工具集,而这些工具文件在jdk目录下的bin目录里面,所以我们在bin目录下可以成功执行java命令,其他目录不行。

·解决方法:我们配置环境变量的目的就是让java命令在任何目录下都可以执行,或者说让它执行时跳转到jdk的bin目录下,jdk的bin目录下有javac.exe和java.exe。


首先明确概念

1.path路径:用来指定可执行文件的搜索路径,也就是后缀名为.exe文件;

2.exe文件:你桌面上快捷方式的根本,点开快捷方式相当于点开改文件;

3.JAVA_HOME:指向Jdk的安装目录,作用是一些基于Java开发的工具会用到,比如tomcat,Eclipse,如果不用这些工具不需要配置。

4.CLASSPATH:在于告诉Java执行环境,在哪些目录下可以找到我们所要执行的Java程序所需要的类或者包。不过在JDK1.5之后的版本完全可以不用设置classpath环境变量就能正常运行程序。

5.IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),

配置了JAVA _HOME ,直接把%JAVA_HOME%/bin追加到PATH中即可。这样的好处在于,如果Java安装目录发生变话,主需要修改JAVA_HOME的值,不用再修改Path变量的值。path变量的作用是可以让我们在没有这个应用的路径下面打开我们需要打开的应用,前提是这个应用得在环境变量里面配置了路径。

重要!!部分Windows10的系统在重启之后%JAVA_HOME%\bin配置的失效,这里解决方法是配置全路径即可,比如:C:\Program Files\Java\jdk1.8.0_131\bin

这时我又有一个问题为什么不要配置CLASSPATH,

在java5中,sun公司改进了JDK设计,JRE会自动搜索当前路径下的jar包(JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。),并自动加载dt.jar和tools.jar。所以从Java5开始,就不必再CLASSPATH环境变量了。网上有很多的教程在安装java时都会要求设置CLASSPATH环境变量,所以在这里纠正下,java 5 以及以后的java版本都不需要再设置了。


目录
相关文章
|
关系型数据库 MySQL Java
Java 最常见的面试题:mysql 的内连接、左连接、右连接有什么区别?
Java 最常见的面试题:mysql 的内连接、左连接、右连接有什么区别?
交流电路理论:峰值、平均值和RMS值的计算公式
除了频率和周期之外,AC 波形的一个关键属性是振幅,它表示交变波形的最大值,或者更广为人知的是峰值。
12617 1
交流电路理论:峰值、平均值和RMS值的计算公式
|
机器学习/深度学习 人工智能 并行计算
AIGC生成3D模型探索与实践
AIGC生成3D模型探索与实践
2217 1
|
11月前
|
缓存 Java Maven
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法!在处理Maven项目问题时,首先检查Maven配置是否正确。接着通过“File--Invalidata Caches”清除IDEA缓存并重启。使用Maven命令`mvn dependency:purge-local-repository`和`mvn dependency:resolve`清除本地依赖缓存。最后,在Terminal中输入`mvn clean install`完成构建。
3342 1
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
|
Android开发
通译灵码,果然不凡
我是一名全栈开发工程师,使用通义灵码个人版IDEA/DevEcoStudio/Android Studio进行程序开发。通过安装灵码插件,开发效率提升了约40%。安装步骤:进入Setting->插件->搜索“lingma”->点击安装。
546 3
|
域名解析 缓存 网络协议
DNS协议 是什么?说说DNS 完整的查询过程? _
DNS是互联网的域名系统,它像翻译官一样将域名转换成IP地址。域名由点分隔的名字组成,如www.xxx.com,包含三级、二级和顶级域名。查询方式分为递归和迭代,递归是请求者必须得到答案,而迭代则是服务器指引请求者如何获取答案。域名解析过程中,会利用浏览器和操作系统的缓存,如果缓存未命中,本地域名服务器会通过递归或迭代方式向上级服务器查询,最终得到IP地址并返回给浏览器,同时在各级缓存中保存记录。
655 1
DNS协议 是什么?说说DNS 完整的查询过程? _
|
存储 网络安全 数据安全/隐私保护
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
604 0
|
存储 定位技术 Python
Python读取多个栅格文件并提取像元的各波段时间序列数据与变化值
Python读取多个栅格文件并提取像元的各波段时间序列数据与变化值
269 1
|
SQL Java 数据库连接
MyBatis-plus最详细的入门使用教程来了
MyBatis-Plus (简称 MP,下文就使用简称啦)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://baomidou.com/ 有以下特性:
3113 0
MyBatis-plus最详细的入门使用教程来了
|
存储 Java 编译器
每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析
每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析
541 0