第一次安装jdk 按照操作走完 会出现 C:Program FilesJavajdk1.8.0_91 和 C:Program FilesJavajre1.8.0_91 两个目录 (平级目录) 这里jre和jdk中的jre目录一模一样,为什么会出现这种呢?
简单说下:jdk是面向java开发者的 是java开发的sdk,jdk目录下的bin目录最主要的是javac 编译来使用,lib中有dt.jar,tools.jar主要是编译过程中运行环境使用,jdk下的jre目录,主要作用是运行编译好的class文件来使用的,其中,jre下的lib中的rt.jar是所有基础类库,就是java文件中import后面的class基础类,bin目录下主要的是java,也就是JVM,java虚拟机用来运行class来使用,运行class的时候就会调用引用的基础类库.
C:Program FilesJavajre1.8.0_91是面向用户的,主要作用和jdk中jre作用一样。在eclipse中只需要选择jre 就可以运行java程序,因为eclispe有自己的java编译器,和classpath的配置。
编译好的class文件是字节码文件,字节码文件是二进制的类库文件,经过JVM的解释运行,成为机器码文件和OS交互运行。
在eclispe中开发,不需要配置path classpath ,只需要制定jre,整个编译 由eclipse自己的编译器来实现(JAVA文件称class文件).
不考虑eclispe的java开发如下:
配置path : ;%JAVA_HOME%in;%JAVA_HOME%jrein; 目的是可以在任意地方使用javac java 比较简单,不然要输入整个javac java指令路径.
配置classpath: ;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar 指定classpath类加载路径为 jdk下面的lib路径,tools.jar是编译时候来使用的.
注意:JVM的默认class load路径是jre下面的rt.jar (默认就可以加载所有的基础类库,不需要设置).
windows 编译 java文件:
1》该java文件没有引用其他外部类的时候: javac xxx.java 默认是在当前目录查找 java文件,当前目录没有则报错,也可以采用全路径来指定java文件。编译的时候会自动使用classpath下的tools.jar 以及jre/lib/rt.jar来 编译java文件。注意:java文件在classpath下 ,当前目录不在classpath,也会报错.
2>java文件引用其他外部类: 也会在当前目录查找java文件,没有则报错,也可以采用全路径来指定java文件。首先会编译外部类,注意:
2.1》如果外部java文件或者该文件对应的class文件存在于classpath中,则成功编译。
2.2》如果外部java文件不在classpath或者java文件的同级目录下。使用 javac -classpath 外部java文件或者class的目录 xxx.java来编译。
运行class文件: 先查找当前目录 在查找classpath。 java xxx 其中xxx.class在当前目录或者classpath中都成功,如果引用类存在 保证引用class存在于classpath中成功,或者使用 java -classpath .;外部类目录 xxx即可。
linux下 如果不配置classpath jdk8默认的是 classpath是 . 也就是当前目录
引入第三方jar包
javac -classpath /data/cn.nubia.framework.jar WeatherTest.java
java -classpath .:/data/cn.nubia.framework.jar WeatherTest