PATH和CLASSPATH

Posted 生姜不爱蒜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PATH和CLASSPATH相关的知识,希望对你有一定的参考价值。

如果你不设置PATH,则在小黑框输入javac hello.java 时会报错,显示javac不是内部命令

内部命令,即操作系统已经设定好的,可直接使用的命令,javac是JDK中的编译工具,是后来人,如果不让系统知道有这个命令,就无法使用它。

一种方法,就是把命令改成:"c:\program files\java\jdk1.7.0\bin\javac" hello.java (其中c:\program files\java\jdk1.7.0\bin\javac是javac存放路径)

但显然,这方法太瞎了,一点都不简便。

这个时候,我们就需要通过设置PATH变量,把这个地址直接告诉给操作系统。也可以理解为,人为地把javac设置成了操作系统的内部命令。

 

具体怎么设置,网上一搜就出来了,我不做赘述。

 

之前曾经说过,编译java文件会出现.class文件,即可执行文件,生成可执行文件后,就会启动JVM,要求JVM执行.class文件中的指令。

启动JVM指令是java。

在小黑框中执行java hello时,若hello.class文件并不在当前文件夹下,就会显示“找不到或无法加载主类 hello”。

其实在未设置classpath时,JVM只会在当前文件夹下寻找对应的.class文件,找不到自然要报错

所以我们才会去设置classpath环境变量,就是为了告诉JVM,到底应该在哪些地方找.class文件。

 

很多人只会根据教程来设置path和classpath,我觉得了解他们的实际用途也是很重要的。

 

最后要提一下,因为系统总是根据设置的路径从前到后挨个查看有没有需要的文件,所以,最有可能的路径放在最前面,可以提高工作效率哦。

以上是关于PATH和CLASSPATH的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot中classpath和classpath*

flume handler

19-classpathjar模块

maven项目只能读到绝对路径下的文件,读不到相对路径下的文件

path() 和 re_path() 有啥区别?

path.resolve 和 path.join 有啥区别?