环境变量解析

java_home
C:\Program Files\Java\jdk-10.0.1

classpath

.;%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar

path
%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

网上看到比较好的:

原文地址:
https://www.cnblogs.com/nulisaonian/p/6027771.html
读者可以先看下面的原文内容,再看我添加的内容:
原文内容帮我解决了大部分疑惑,但还有一部分没有解决:问题就是:
classpath:为什么是.;%JAVA_HOME%\lib\dt.jar;
					%JAVA_HOME%\lib\tools.jar
	中的lib\dt.jar;lib\tools.jar
	我在java的目录中根本没有发现的,好吧。
	解决方案:
	转载请注明出处:http://blog.csdn.net/ns_code/article/details/18547959
	本来想自己写的,人写的挺好,我想就算了吧;
	感谢两位大佬。

原文内容:
浅析JAVA_HOME,CLASSPATH和PATH的作用:
1,设置JAVA_HOME:  java的目录
一、为了方便引用,比如,你JDK安装在C:\ProgramFiles\Java\jdk1.7.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串;

二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!

三、第三方软件会引用JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题.

2,设置CLASSPATH:   为了找到执行目标,java不同于linux上的可执行文件,linux的可执行文件提前都编译链接好了,最终是一个打包好的文件。java有一堆可执行文件:*.class文件. CLASSPATH就是约定class文件的查找路径。
这是一个比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再在任何目录下运行java A, 看看会有什么结果~~:)~~~,一切正常, java命令通过CLASSPATH找到了.class文件!

classpath=c:\test就表示执行运行命令时去c:\test文件夹去找需要被执行的class文件
在java5之前该路径是不能指定当前路径的,除非这样设置:classpath=.;c:\test,就表示先在当前目录找class文件,要是没找到就到c:\test去找;(当一个变量有多个值时,多个值之间是有英文的分号隔开)
设置从当前所在目录查找(java1.5后默认):set classpath=.

3,设置PATH:(必须设置)
道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java等来执行java命令吗, 当然不会, 于是, 你可以选择把%JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.
(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序,并且执行.)

猜你喜欢

转载自blog.csdn.net/weixin_42321963/article/details/80965479