JAVA环境变量JAVA_HOME、CLASSPATH、PATH配置说明以及javac命令无法使用的问题

抄自:https://blog.csdn.net/luckykapok918/article/details/37053949

基础概念

  1. current directory(当前目录):当前在用的目录就是当前目录
          比如说当你打开NOTEPAD,并处于运行状态时候,当前目录就是c:/windows;
          如果你用cmd命令打开命令行窗口,当前目录就是c:/windows/system32;
          如果你在用java这条指令,当前目录就是JAVA下的BIN目录所在的路径,因为java.exe在bin里面。在java开发配置环境变量时,系统默认(我们对classpath不做任何设定时)的路径也是当前目录。
  1. JAVA_HOME:它是指jdk的安装目录
          像D:/j2sdk1.4.2_16,在这路径下你应该能够找到bin、lib等目录。
          为什么要设置它呢,不设定可不可以呢?不设定也是可以滴,但是最好还是设置一下。
          我们现在就当它是一个变量代换 JAVA_HOME = D:/j2sdk1.4.2_16, 就是为了避免多写字,它还有一个好处就是当我们需要改变某个jdk时,只需要改 JAVA_HOME 的值就可以了。等在后面看了 Tomcat 的启动分析时你就明白了。当在环境变量中引用它的时候要用 %JAVA_HOME% 来表示 D:/j2sdk1.4.2_16
  2. Path:系统变量Path告诉操作系统可执行文件(.exe、.bat等)所在的路径
          当OS(操作系统)发现某个*.exe时,windows默认从当前目录开始查找这个命令,若查不到,OS就会到Path所设定的路径中去寻找该命令,然后执行。
          系统默认的系统变量为:Path = %SystemRoot%;%SystemRoot%/system32;%SystemRoot%/System32/Wbem
          就是说处于上面3个目录(多个变量用分号隔开)中的*.exe文件,可以在任意地方被执行(在运行窗口能直接执行的命令,像cmd、notepad等,基本都在上面的3个目录里面),所以他们可以直接运行。
          上面的%SystemRoot%是什么意思呢?%SystemRoot%就是安装操作系统的时候,系统默认的安装路径

    若你的windows xp装在C:/WINDOWS,则你的%systemRoot%路径就是c:/windows。
    %systemRoot%只是一个符号,代表你的系统安装目录

            下面是常见系统默认安装路径:
             98—-c:/windows
             2000–c:/winnt
             2003–c:/windows
             xp—-c:/windows

      当我们要进行java开发时,OS经常需要用到java.exe、javac.exe等,(若jdk安装在D:/j2sdk1.4.2_16)因此应该将 D:/j2sdk1.4.2_16/bin(%JAVA_HOME%/bin)加入到系统的path中去。

      注意:如果你加入的位置不是在最后,那还需要在bin后面加上英文状态下的分号:%JAVA_HOME%/bin;多个变量之间要用分号隔开,如果它前面没有,你就加一个
      明确一下:%JAVA_HOME%/jre/bin 这个路径是不需要加入Path的。参考:http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html

4.  CLASSPATH:告诉java虚拟机(jvm)要使用或执行的*.class文件放在什么地方
      CLASSPATH是专门针对java的,它相当于windows的path;path是针对整个windows的。
      所谓的JVM就好像是在微软OS上面再激活另外一个OS,对JVM来说CLASSPATH就好像是对微软OS来说的PATH,所以要用jvm开运行程序就需要设定classpath,然而jvm像windows一样它也有个默认的查找class文件的路径,对刚开始学习java的我们来说,默认的已经够我们用了,那就是当前路径,因此不设置classpath也可以。
      在windows中 classpath 大小写没有关系,其他的环境变量名称也一样。
      当我们不设定classpath时,系统默认的classpath是当前目录,如果你个人想设置classpath的话,那么务必在classpath中加入".",这个英文状态下的点就表示当前目录。至于classpath中要不要加入其他的路径(包括文件目录、包的根目录等),这要看开发的需要,一般我们初学者是用不到的。

JAVA_HOME = D:/j2sdk1.4.2_16
Path 环境变量中在最前面加入(若系统原来没有就新建) %JAVA_HOME%/bin; (加在最前面可以提高查找速度)
CLASSPATH = . 这一步可以不用设。

javac命令无法使用

参考自:https://www.zhihu.com/question/28428426

  1. win10系统下javac无法使用问题
          Win 10 下编辑界面,会逐条将变量分开显示,以便操作和查看。将配置的路径放到最上面,然后再次进入 Path 路径编辑,居然编辑界面自动变回 Win 7 的样式,所有变量连成一串,并且自动在配置的变量值前后加了引号和一个分号,导致路径失效。
          有以下两种解决方法:
           (1). 删掉多余的引号和分号
           (2). 添加路径时,将两个路径分开添加,且不添加分号

  2. 在Windows上装了Oracle/Sun JDK(过程中还同意安装了Public JRE),然后没有修改过PATH环境变量的配置?
          那么在命令行里运行的java.exe来自Public JRE,具体来说在C:\Windows\System32\java.exe。它会找到您系统上现在装着的那个Public JRE的具体路径去运行Java程序。而javac.exe不是JRE的一部分,而是JDK的。JDK的安装程序不会自动将自己的bin目录配置到PATH环境变量上,所以在命令行里也看不到它。要解决这个问题要么自己手动把JDK安装目录的bin目录配置到PATH环境变量里,要么在命令行用JDK的全路径去访问javac.exe

Newer Post

Java main方法

参考自:https://blog.csdn.net/show_me_the_world/article/details/47106191https://blog.csdn.net/show_me_the_world/article/details/47106191 背景  &nb …

继续阅读
Older Post

为什么在 Java 中用 (low+high)>>>1 代替 (low+high)/2 或 (low+high)>>1 来计算平均值呢?好在哪里?

抄自:https://www.cnblogs.com/zt007/p/7169735.html?utm_source=itdadao&utm_medium=referral >>>与>>是位运算符,只对整型有效(不能用于浮点型)。当是整型的时候(low+hig …

继续阅读