SDK就是JDK,有人也叫j2se。
JDK可以安装多个,不过一定要是不同的版本,小版本不同也可以。大小版本完全相同,会先卸载再安装。
安装路径不要有空格,Program Files正好有一个空格,所以安装jdk的时候不要默认安装。
安装JDK的时候,不安装源码,一切正常,只是不能查看源码而已。
如果原来没有安装,现在想要安装:
1、打开控制面板-->添加或删除程序-->找到程序点“更改”按钮。
2、copy别人的源码过来
安装JDK的时候,还可以选择安装公共的JRE。建议安装,当然可以不安装。客户安装的话只安装jre就可以了。在这里选择安装有一个好处:这个安装会修改注册表,有些需要用到jre的软件,到时候就不需要给它指定jre的路径了。
公共的JRE安装完了之后,能找到它的目录;在控制面版的添加或删除程序里还可以找到一个java 7 update 79;还可以在控制面版里找到java的控制面版。
卸载掉java 7 update 79,就卸载掉了jre、java 7 update 79、java控制面版。
jdk的bin目录下有jar命令、javac命令;jre的bin目录下没有这两个命令。
1、JAVA_HOME
只配置JAVA_HOME,不配置Path不行。
不配置JAVA_HOME只配置Path,java命令在所有路径下也是有效命令。
2、Path
操作系统按照path的配置,寻找要执行的命令,例如javac.exe命令和java.exe命令。
配置了path环境变量,在任意一个目录下都可以执行java命令,都是有效命令。也就是说任意一个目录下都可以存放java命令要执行的文件,比如源文件、字节码文件。
不配置path环境变量的话,只能在bin目录下面执行java命令。
配置了Path,虽然在任意目录下java命令都是有效命令,但是javac.exe这个命令还是要在切换到.java文件所在的路径才可以执行编译,因为java根本就没有给.java文件配置路径的地方。
执行javac.exe命令的时候,必须要在所要执行的文件的当前路径才可以,即使在父路径也不可以。
配置Path的时候,必须要到bin目录才可以。
3、classpath
编辑java源码时,package xxx;那么这个类编译后的字节码文件必须要放到xxx路径下;
编辑java源码时,import xxx;那么导入的这个类的字节码文件必须要在xxx路径下。
已经编译好的.class文件,只要给它配置了classpath,在任意路径都可以使用java.exe命令来运行。
裸体类在任意目录下输入java Cat 就可以;有包的类在任意目录下必须要输入java com.yangquan.aolun.Cat。
当一个.class文件用到另一个.class,而它们又不在同一个包下(同一个目录下),会根据classpath的配置去寻找。
classpath常用的一个配置方法是只配一个点,一个点代表的意思是当前路径,在命令窗口里当前路径就是所在目录;在eclipse里当前路径是指某个项目下的bin目录。
classpath什么也不配置,默认就是当前目录;但如果给它配置了一个路径,那么默认的当前路径失效,必须再配置一个点。
classpath的配置方法:配置包名最上层目录的父目录。注意,不能把包名也配进去。以下面这个类为例,如果classpath配置为D:\java\testPackage\com\yangquan\aolun;那么在编译Dog类的时候,到了第三行的时候,找Cat类会在D:\java\testPackage\com\yangquan\aolun+com.yangquan.aolun.Cat这个路径下去找。并且,实际上,想要执行一个类,如果这个类有包名,那么java 包名+类名,包名不可省略。
package com.yangquan.aolun;
public class Cat {
private int age;
private String name;
public void setAge() {
age = 1;
}
public void setName() {
name = "tomcat";
}
public void info() {
System.out.print("name:"+name+",age:"+age);
}
}
public class Dog {
public static void main(String[] args) {
com.yangquan.aolun.Cat c = new com.yangquan.aolun.Cat();
c.setName();
c.setAge();
c.info();
}
}
编译Dog类文件的过程,会寻找Cat的字节码文件。
Cat字节码文件所在路径是com.yangquan.aolun,要么我们把com的父目录当作当前路径(cmd窗口中),编译没有问题;要么我们配置classpath的环境变量,配置为com目录的父目录。