1)JDK 在安装的过程当中会出现两次安装提示,第 1 次是安装 JDK ,第 2 次是安装 JRE。我把 JDK 安装在 D:\Java\jdk\ 这个路径下,把 JRE 安装在 D:\Java\jre\ 这个路径下
2)在配置 PAHT 和 CLASSPATH 的值时,是对 JDK 安装路径的配置,与 JRE 安装路径无关(固然这只是通常状况下) java
1) PATH 要配置的路径是:;D:\Java\jdk\bin;D:\Java\jdk\jre\bin(这里配置了两个路径,英文分号是每一个路径的分隔符)。一般咱们会增长一个变量 JAVA_HOME,它的值配置为:D:\Java\jdk(注意这里不用分号开头,也不用分号结尾),所以 PATH 的值一般配置为:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
2)添加 JAVA_HOME 变量的好处:当我从新安装 JDK 的时候,若是我想改变 JDK 的安装路径为 E:\Java\jdk\ ,当我没有配置 JAVA_HOME 时,我必须一个一个地去更改 PATH 的值,好比改成 ;E:\Java\jdk\bin;E:\Java\jre\bin ,可是若是我有配置 JAVA_HOME 的值,那我只需更改 JAVA_HOME 的值为 E:\Java\jdk 就好了,PATH 的值能够保持不变
3)配置 PATH 环境变量的做用:咱们用命令行编译运行 Java 程序时,会常常用到 java 和 javac 这两个命令,当咱们还没设定 PATH 的值的时候,这两个命令是没办法在命令行的任意文件目录下执行的,那么配置 PATH 值就是为了让这两个命令能够执行
4)java 和 javac 命令的工做原理:咱们到 jdk 的安装路径下能够看到有一个 bin 文件夹,进入 bin 文件夹里面会发现 java 和 javac 就在这里。java 和 javac 都是 .exe 程序,在命令行中若是想要执行 .exe 程序,那么必需要从命令行进入到放置 .exe 程序的目录下,咱们能够在命令行中输入 cd /d D:\Java\jdk\bin 命令,而后命令行会进入 bin 文件目录下,这时,即便咱们没有配置 PATH 的值,也能够执行 java 和 javac 命令,能够在命令行输入 java -version 命令试试。可是若是咱们想在命令行的任何目录下都能执行 java 和 javac 命令那该怎么办呢?显然,要配置 PATH 的值。当咱们执行 java 命令时,系统首先会在当前目录下寻找是否有 java.exe 程序,有,那么就执行,没有,那么就会去 PATH 里面寻找,因此,当咱们配置好 PATH 以后,在任何目录下执行 java 和 javac 都会生效 ui
1)CLASSPATH 的值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(这里配置了 3 个路径,其中 . 符号表示本地路径,其余两个路径均可以在 JDK 的安装路径下面找到)
2)配置 CLASSPATH 的做用:寻找 .class 文件。例如:若是我有个 Java 程序在 E:\Example\ 路径下,文件名称为 Test.java 。要编译程序,那首先要将命令行切换到 E:\Example\ 目录(在命令行处输入命令 cd /d E:\Example\), 而后执行 javac Test.java 命令将 .java 文件编译成 .class 文件。没有配置 CLASSPATH 时:咱们能够直接在命令行的 E:\Example\ 目录下执行 java Test 命令,可以执行成功的缘由是在没有配置 CLASSPATH 时,系统会默认在本地目录下寻找编译后的 Test.class 文件。有配置 CLASSPATH 时:假如我随便在 CLASSPATH 中添加一个路径 F:\; ,那么系统便不会默认在本地目录下寻找,这时咱们也想要在命令行的 E:\Example\ 目录下执行 java Test 命令,则 CLASSPATH 应该配置成 .;F:\;( . 符号就表示本地目录)
3)再举个例子:个人 CLASSPATH 已经配置成: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar ,如今我将编译好的 Test.class 文件放在 D:\ExampleClass\ 路径下,那么我想要在命令行中执行 java Test 命令要怎么办呢?有两种方法,第一种方法:我将命令行切换到 D:\ExampleClass\ 目录下,而后能够直接执行 java Test 命令(由于 CLASSPATH 配置了 . 符号,能在本地目录下寻找 Test.class 文件)。第二种方法:将 D:\ExampleClass\ 路径添加到 CLASSPATH 中,即 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;D:\ExampleClass ,这时咱们就能够在命令行中的任何目录下执行 java Test .net
1)配置 PATH 是为了使 java 和 javac 命令能在命令行的任何目录下执行
2)配置 CLASSPATH 是为了执行 java Test 命令时,可以找到 Test.class 文件
3)PATH 和 CLASSPATH 的配置都与 JDK 的安装路径有关,与 JRE 的安装路径无关(固然这只是通常状况下)
4)向 CLASSPATH 添加指定路径以后可使 java Test 在命令行的任何目录下执行;使用绝对路径可使 javac E:\Example\Test.java 在命令行的任何目录下执行 设计
无 options对象
假设 D:\sources\ 路径下有一个文件名为 Test.java 的文件。
例如:javac D:\sources\Test.java ,能够在命令行的任何目录下输入该命令,编译后,系统默认会在 D:\sources\ 路径下生成 Test.class 文件 it
-d <目录>(使用该选项以前要先在计算机中创建目录)
假设 D:\sources\ 路径下有一个文件名为 Test.java 的文件。
例如:javac -d E:\myclasses D:\sources\Test.java ,能够在命令行的任何目录下输入该命令,编译后,系统会在 E:\myclasses\ 路径下生成 Test.class 文件 (注意:必需要先在计算机中创建 E:\myclasses\ 路径)
-sourcepath <路径>
例1(.java 文件在同一个包下):
// 假设该文件位于 E:\com\example\ 路径下,文件名为 Fruits.java package com.example; public class Fruits{ @Override public String toString(){ return "Fruits"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; public class Test{ public static void main(String[] args){ System.out.println(new Fruits()); // 引用 Fruits 对象 } }
程序:
编译 Test.java 文件的方法:(要先在计算机中创建 D:\classes\ 路径)
运行 Test.class:
例2(.java 文件在不一样的包下):
// 假设该文件位于 E:\hzl\net\example\ 路径下,文件名为 Person.java package net.example; public class Person{ @Override public String toString(){ return "Person"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; import net.example.Person; // 要导入包 public class Test{ public static void main(String[] args){ System.out.println(new Person()); // 引用 Person 对象 } }
程序:
编译 Test.java 文件的方法:(首先要在计算机中创建 D:\yourclasses\ 路径)
运行 Test.class:
例3(-sourcepath 的本质):
执行包含该选项的命令时,系统会将指定的 <路径> 暂时覆盖掉 CLASSPATH 中的路径
// 假设该文件位于 E:\net\example\ 路径下,文件名为 Man.java package net.example; public class Man{ @Override public String toString(){ return "Man"; } }
// 假设该文件位于 F:\cn\example\ 路径下,文件名为 Woman.java package cn.example; public class Woman{ @Override public String toString(){ return "Woman"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; import net.example.Man; import cn.example.Woman; public class Test{ public static void main(String[] args){ System.out.println(new Man()); // 引用 Man 对象 System.out.println(new Woman()); // 引用 Woman 对象 } }
程序:
一、还没配置 CLASSPATH 时:
编译:(首先要在计算机中创建 D:\myclasses\ 路径)
运行:
二、CLASSPATH 的值配置为 .;E:\ (. 符号表示本地目录,E:\ 是存放 Man.java 文件的路径):
编译:
三、想让编译经过:
-classpath <路径>
一样,执行包含该选项的命令时,系统会将指定的 <路径> 暂时覆盖掉 CLASSPATH 中的路径
-sourcepath 能实现的功能,-classpath 一样能实现, 可是 -classpath 能实现的功能,-sourcepath 不必定能实现,例如:
不少时候,咱们只有 .class 文件或者只有由 .class 文件组成的 jar 包,那么咱们在编译程序的时候就不能用 -sourcepath 而是要用 -classpath 来指定路径,使程序能编译经过
// 假设该文件位于 D:\cn\example\ 路径下,文件名为 Animals.java // 假设我已经将它编译成 Animals.class 文件,而且将它放在 F:\cn\example\ 路径下 package cn.example; public class Animals{ @Override public String toString(){ return "Animals"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; import cn.example.Animals; // 导入包 public class Test{ public static void main(String[] args){ System.out.println(new Animals()); // 引用 Animals 对象 } }
程序:
编译 Test.java 文件的方法:(首先要在计算机中创建 D:\myclasses\ 路径)
运行 Test.class:
-classpath <路径>
例1:
// 假设该文件位于 D:\cn\example\ 路径下,文件名为 Animals.java // 假设我已经将它编译成 Animals.class 文件,而且将它放在 F:\cn\example\ 路径下 package cn.example; public class Animals{ @Override public String toString(){ return "Animals"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; import cn.example.Animals; // 导入包 public class Test{ public static void main(String[] args){ System.out.println(new Animals()); // 引用 Animals 对象 } }
编译:
运行:
例2:
执行包含该选项的命令时,系统也会将指定的 <路径> 暂时覆盖掉 CLASSPATH 中的路径
// 假设该文件位于 D:\sources 路径下,文件名为 Test.java package com.example; public class Test{ public static void main(String[] args){ System.out.println("Hello World !"); } }
一、没有配置 CLASSPATH 的值时:
编译:
运行:
二、将 CLASSPATH 的值配置成 . 符号
编译:
运行:
1)javac
2)java
3)程序编译和运行的步骤
// 假设该文件位于 E:\net\example\ 路径下,文件名为 Person.java package net.example; public class Person{ @Override public String toString(){ return "Person"; } }
// 假设该文件位于 D:\sources\ 路径下,文件名为 Test.java package com.example; import net.example.Person; public class Test{ public static void main(String[] args){ System.out.println(new Person()); // 引用 Person 对象 } }
编译:
运行:
1)假设计算机中有一个 D:\classes\ 路径,该路径下有 a.class ,b.class 和 c.class 三个文件
2)将命令行切换到 D:\classes\ 目录下,而后执行 jar -cvf Test.jar *.class
3)查看 D:\classes\ 路径,会发现生成了一个 Test.jar 文件,这个文件中就包含了 a.class ,b.class 和 c.class 三个文件