jdk环境变量的配置及path、classpath的作用和区别
2016-02-01 14:29
274 查看
记得刚学java时,配一个jdk的环境变量都会搞得焦头烂额,刚实习那会,有次需要更换jdk版本,公司那哥们叫我卸载再安装新版本的jdk,现在想想只能自己都笑了,但是每个人都从小白一步步走过来,不断的总结和记录才会更好的积累。
个人觉得像jdk、tomcat等等这些在官网下载解压版是不错的选择!(当然,jdk在Oracle官网是没提供解压版的,你可以通过下载Linux版本再解压出来)理论上下载了jdk之后,一个变量都不需要配置,只不过为了命令行敲起来方便,所以通常会把jdk的bin目录加入到path变量中。JAVA_HOME这个变量的作用是一些基于java开发的工具会用到,比tomcat,groovy,vertx…..,如果不用这些工具这个变量也可以免了,不过通常为了方便以后用java开发的小工具,一般都会设置JAVA_HOME,然后把
%JAVA_HOME%\bin; 追加到PATH中。
最终结论:
1、下载解压版的jdk,解压!
2、新建用户变量(注意这里说的是用户变量而不是系统变量,这样做是有好处的,不会污染你的系统环境变量),变量名:JAVA_HOME 变量值 例如: D:\development\jdk1.6
3、在path中添加 %JAVA_HOME%\bin;
备注:假如更换jdk版本,你只要将JAVA_HOME的变量值变为另一个jdk的bin目录即可!
1.path的作用
path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行Java文件,但必须把完整的路径写出来,如
C:\ProgramFiles\Java\jdk1.6.0_10\bin\javac TheClass.java。path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前
目录下,那就会依次搜索path中设置的路径;而java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用
再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找;
2.classpath的作用
classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时importjavax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);如果你想要编译在当前目录下找,就加上“.”如:.;D:\development\jdk1.6\bin,这样编译器就会到当前目录和C:\ProgramFiles\Java\jdk\去找javax.swing.JTable这个类;
备注:用Eclipse开发,不设classpath也没关系,因为Eclipse有相关的配置;
path是os用;
classpath java用
path里面不光有Java的bin,还可以包含许多其他的,maven、oracle、等等,只要在path中设了这些环境的路径,你在dos下的任何路径上都可以调用这些路径下的命令。
classpath是java专用的查找类的路径。(用工具开发就不需要考虑这一点)
可能遇到的问题:
当第一次下载JKD并配置好环境变量,在命令行窗口键入javac,但却抛出如下异常,请问为什么?
但输入java、java -version、set classpath等命令却都正确,这个问题的原因就是没有将tools.jar配置在classpath中;
可以通过如下配置来解决:
1. 新建变量名为CLASSPATH的用户变量
2. 变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
备注:如果配置了CLASSPATH用户变量,dos中javac命令还是报错,你不要怀疑上面的配置方法有问题,你就应该去看看你的jdk的lib目录下是否根本就没有tools.jar这个包。
总之,配置jdk环境,除非你是用刚开始真记事本敲代码,只要你是用eclipse工具做开发,只要按着上面的“最终总结”的三步就ok!
个人觉得像jdk、tomcat等等这些在官网下载解压版是不错的选择!(当然,jdk在Oracle官网是没提供解压版的,你可以通过下载Linux版本再解压出来)理论上下载了jdk之后,一个变量都不需要配置,只不过为了命令行敲起来方便,所以通常会把jdk的bin目录加入到path变量中。JAVA_HOME这个变量的作用是一些基于java开发的工具会用到,比tomcat,groovy,vertx…..,如果不用这些工具这个变量也可以免了,不过通常为了方便以后用java开发的小工具,一般都会设置JAVA_HOME,然后把
%JAVA_HOME%\bin; 追加到PATH中。
最终结论:
1、下载解压版的jdk,解压!
2、新建用户变量(注意这里说的是用户变量而不是系统变量,这样做是有好处的,不会污染你的系统环境变量),变量名:JAVA_HOME 变量值 例如: D:\development\jdk1.6
3、在path中添加 %JAVA_HOME%\bin;
备注:假如更换jdk版本,你只要将JAVA_HOME的变量值变为另一个jdk的bin目录即可!
1.path的作用
path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行Java文件,但必须把完整的路径写出来,如
C:\ProgramFiles\Java\jdk1.6.0_10\bin\javac TheClass.java。path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前
目录下,那就会依次搜索path中设置的路径;而java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用
再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找;
2.classpath的作用
classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时importjavax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);如果你想要编译在当前目录下找,就加上“.”如:.;D:\development\jdk1.6\bin,这样编译器就会到当前目录和C:\ProgramFiles\Java\jdk\去找javax.swing.JTable这个类;
备注:用Eclipse开发,不设classpath也没关系,因为Eclipse有相关的配置;
path是os用;
classpath java用
path里面不光有Java的bin,还可以包含许多其他的,maven、oracle、等等,只要在path中设了这些环境的路径,你在dos下的任何路径上都可以调用这些路径下的命令。
classpath是java专用的查找类的路径。(用工具开发就不需要考虑这一点)
可能遇到的问题:
当第一次下载JKD并配置好环境变量,在命令行窗口键入javac,但却抛出如下异常,请问为什么?
Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/tools/javac/Main Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main at java.net.URLClassLoaderv$1.run<Unknow Source> at java.security.AccessController.doPrivileged<Native Method> at java.net.URLClassLoader.findClass<Unknow Source> at java.lang.ClassLoader.loadClass<Unknow Source> at sun.misc.Launcher$AppClassLoader.loadClass<Unknow Source> at java.lang.ClassLoader.loadClass<Unknow Source> Could not find the main class: com.sun.tools.javac.Main. Program will exit.
但输入java、java -version、set classpath等命令却都正确,这个问题的原因就是没有将tools.jar配置在classpath中;
可以通过如下配置来解决:
1. 新建变量名为CLASSPATH的用户变量
2. 变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
备注:如果配置了CLASSPATH用户变量,dos中javac命令还是报错,你不要怀疑上面的配置方法有问题,你就应该去看看你的jdk的lib目录下是否根本就没有tools.jar这个包。
总之,配置jdk环境,除非你是用刚开始真记事本敲代码,只要你是用eclipse工具做开发,只要按着上面的“最终总结”的三步就ok!
相关文章推荐
- Spring配置文件中属性值不能提示的解决办法(eclipse添加xsd文件)
- Spring AOP进行日志记录,管理
- java实现多个文件压缩
- java数组拆分多个子数组
- [Head First Java] 一个简单的聊天程序
- java中(&,&&)和或(|,||)的区别
- [Spring实战系列](5)Spring应用上下文
- spring setter属性注入
- 从头认识Spring-1.10 使用命名空间p来注入属性
- JAVA 发送下载文件
- Java返回距离当前时间段
- java 参数 -Xms -Xmx -Xss
- 深入分析JavaWeb 6 -- servletConfig 与servletContext详解
- (八) shiro + spring + mybatis整合开发
- mybatis generator eclipse插件的安装
- myeclipse相同变量的颜色高亮
- Spring 整合Hibernate
- java判断字符串中是否含有中文
- Spring MVC配置静态资源的正常访问
- Java控制台输出程序运行时间