基础知识总结之 jdk部分

第一次安装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            

                 

                 

原文地址:https://www.cnblogs.com/hadoop-dev/p/6880756.html