jdk下载及安装
下载
下载 jdk 下载 java se 版本的即可。
web 开发前不需要像安装 java se 一样安装java ee,只要在项目中添加 java ee 的jar 包就可以了,里面大多是接口和抽象类,同时还须设置为依赖范围。
下载eclipse 要下载java EE 版本,否则不可以 new Dynamic Web Project。
简介
SDK就是JDK,有人也叫j2se。
安装JDK
JDK可以安装多个,不过一定要是不同的版本,小版本不同也可以。大小版本完全相同,会先卸载再安装。
安装路径不要有空格,Program Files正好有一个空格,所以安装jdk的时候不要默认安装。
安装源码
安装JDK的时候,不安装源码,一切正常,只是不能查看源码而已。
如果原来没有安装,现在想要安装:
1、打开控制面板-->添加或删除程序-->找到程序点“更改”按钮。
2、copy别人的源码过来
安装JRE
安装JDK的时候,还可以选择安装公共的JRE。建议安装,当然可以不安装。客户安装的话只安装jre就可以了。在这里选择安装有一个好处:这个安装会修改注册表,有些需要用到jre的软件,到时候就不需要给它指定jre的路径了。
卸载
公共的JRE安装完了之后,能找到它的目录;在控制面版的添加或删除程序里还可以找到一个java 7 update 79;还可以在控制面版里找到java的控制面版。
卸载掉java 7 update 79,就卸载掉了jre、java 7 update 79、java控制面版。
JDK 和 JRE 的区别
jdk的bin目录下有jar命令、javac命令;jre的bin目录下没有这两个命令。
配置环境变量
控制面板/系统和安全/系统
1、JAVA_HOME
配置Path的时候,必须要到bin目录才可以。
操作系统按照Path的配置,寻找要执行的命令,例如javac.exe命令和java.exe命令。
不配置Path环境变量的话,只能在bin目录下面执行java命令。
配置了Path环境变量,在任意一个目录下都可以执行java命令。也就是说任意一个目录下都可以存放java命令要执行的文件,比如源文件、字节码文件。
配置了Path,虽然在任意目录下java命令都是有效命令,但是javac.exe这个命令还是要在切换到.java文件所在的路径才可以执行编译,因为java根本就没有给.java文件配置路径的地方。
执行javac.exe命令的时候,必须要在所要执行的文件的当前路径才可以,即使在父路径也不可以。
ClassPath,java在编译和运行时寻找 class文件的路径。已经编译好的.class文件,只要给它配置了ClassPath,在任意路径都可以使用java.exe命令来运行。当一个.class文件用到另一个.class,而它们又不在同一个目录下或同一个包下,会根据ClassPath的配置去寻找。
命令行设置ClassPath
假设在C:\目录下有一个Hello.class文件,在D:\目录下的命令行执行 set classpath=c:,之后在D:\目录下就可以执行java Hello了。
还可以设置为set classpath=.
这种方式设置ClassPath有一种局限性,一旦重新开启命令行窗口,就失效了。
所以最好设置环境变量ClassPath。
ClassPath什么也不配置,默认就是当前目录;但如果给它配置了一个路径,那么默认的当前路径失效,必须再配置一个点。建议把当前路径"."配在最前面,因为:如果我们在当前路径写了一个.java 文件,接着编译,就是编译当前目录的.java文件,没有问题;同时这个时候在另外一个ClassPath下面有一个同名的class文件,当我们执行java 命令时,系统会根据ClassPath的配置顺序去找class文件,这样当前目录的class文件就不会被执行,执行的反而是配置在前面的ClassPath下的class文件。
通常设置 ClassPath 为 ".;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar"。JDK的库所在包就是tools.jar。
如上设置后,如果在.class文件的当前路径下,那么使用java+类名的方式解释没有问题。但如果更换了目录,当前路径里没有.class文件,异常。这时,即使在命令行给出.class文件所在的全路径,依然出错。
设置自己的ClassPath时配置包名最上层目录的父目录,不要把包名也配进去。jar包的ClassPath设置方法: xxx.yyy.zzz.jar。
设置了ClassPath后要重启命令行。
使用eclipse不需要配置ClassPath,它自己有配置,一般为eclipse工作空间+项目名+bin。
ClassPath和package的区别
package
编辑java源码时,package xxx;那么这个类编译后的字节码文件必须要放到xxx路径下;编辑java源码时,import xxx;那么导入的这个类的字节码文件必须要在xxx路径下。
ClassPath 和 package
java在寻找一个class文件的时候是通过把ClassPath和package结合起来寻找的。
ClassPath和package的区别
ClassPath和package对于操作系统来说都是路径。但对于java来说它们并不相同,对于java来说,ClassPath还是路径,而package其实也是路径,但更重要的 package 是被当作文件名称的一部分来使用的。
以下面源码为例,如果classpath配置为D:\java\testPackage\com\yangquan\aolun;
那么在编译Dog类的时候,到了第三行的时候,找Cat 的字节码文件会在D:\java\testPackage\com\yangquan\aolun+com.yangquan.aolun.Cat这个路径下去找。