Java环境变量中classpath是必须配置吗
不要被旧书误导了,jdk6以后的版本都不用再配CLASSPATH,而且也不建议去配。
理论上java安装完一个变量都不需要配置,只不过为了命令行敲起来方便,所以通常会把jdk/bin目录下加入到path变量中。JAVA_HOME这个变量的作用是一些基于java开发的工具会用到,比如tomcat,groovy,vertx.....,如果不用这个工具这个变量也可以免了。
不过通常为了方便以后用java开发的小工具,一般都会设置JAVA_HOME,然后把$JAVA_HOME/bin追加到PATH中。
classpath 不是必须配置的。
假如你在D盘下有个test.java文件。
你进到d盘后,javac test.java 那么会在当前生成test.class文件。所以你java test.class会得到相应的结果。
如果你设置了classpath是D:/myclasspath
你将test.class剪切到D:/myclasspath中,你在d路径下执行java test 照样可以得到结果。
因为规则是这样的:你执行java test的时候,先在test.java当前目录找test.class文件找不到再去classpath中找,这里是到D:/myclasspath中找。
设置Path变量的目的,是为了让操作系统内核能够找到Java运行时的入口应用程序,比如java, javaw等;而在Java虚拟机JVM能跑起来的情况下,你要告诉JVM你运行的class文件在哪些位置,所以就有了classpath变量(这个变量并不是操作系统需要的变量)
通常情况下,classpath变量除了包含Java安装目录下的库以外,还包括一个当前路径(一个.),就是说也要从运行main函数的那个class文件的当前目录下找其它的class文件(简单认为class文件对于JVM,相当于exe文件对于Windows OS)
jvm在查找class文件时如果没有设置classpath会在当前路径查找,设置classpth后仅在classpath路径下查找class文件即可。
classpath 不是必须配置的。假如在D盘下有个test.java文件。进到d盘后,javac test.java 那么会在当前生成test.class文件。所以java test.class会得到相应的结果。如果设置了classpath是D:/myclasspath,将test.class剪切到D:/myclasspath中,在d路径下执行java test 照样可以得到结果。
因为规则是:执行java test的时候,先在test.java当前目录找test.class文件找不到再去classpath中找,这里是到D:/myclasspath中找