windows下java相关的环境变量
如果你是普通用户,在安装jre时候,环境变量已经由oracle帮你设置过了。
如果你要使用jdk,则可以废弃掉jre。环境变量可以按照如下设置。
jre和jdk的区别点击这里
windows属性--->新建环境变量
JAVA_HOME = JDK安装路径;如C:\Program Files\Java\jdk1.8.0_65
PATH = %JAVA_HOME %/bin; 加在最前面
CLASSPATH = . 这是之前用的方式,现在很多机器都可以不用在设CLASSPATH。
path(环境变量)是dos以前的内部命令,windows继续沿用至今。用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。
因为java必须经过编译才能运行,编译就要通过常用命令比如:编译javac等
而这些常用的编译命令就存放在jdk的bin目录
而window运行java编译命令的时候,本地查找不到某个命令或文件,会到path中去查找
安装JDK后需要设置3个主要环境变量
新建系统变量JAVA_HOME:它指向JDK的安装目录,作用:
一是为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.5.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
二则是归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可(作用相当于C语言中的宏定义), 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 等你以后用JAVA久了就会知道的~:)~~, 要是某个软件不能正常使用, 不妨想想是不是这个问题.
修改系统变量PATH:它的作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.
新建系统变量CLASSPATH:它的作用是指定类搜索路径,要使用已经编写好的类,JVM就是通过CLASSPATH来寻找类的。我们可以把一些常用的库设置到CLASSPATH中。要不然你每次运行一个java程序时候可能就要这样:
java -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.1\lib\idea_rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.1\plugins\junit\lib\junit5-rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.1\plugins\junit\lib\junit-rt.jar;C:\Users\Administrator\IdeaProjects\demo1\out\test\demo1;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.1\lib\junit-4.12.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 demoTest
是不是十分十分麻烦?
这是一个很有趣,当然也比较折磨初学者的问题。 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:"再运行java A, 看看会有什么结果~:)~~, 一切正常, java命令通过CLASSPATH找到了.class文件!