基础知识总结之 jdk部分
第一次安装jdk 按照操作走完 会出现 C:\Program Files\Java\jdk1.8.0_91 和 C:\Program Files\Java\jre1.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 Files\Java\jre1.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%\bin;%JAVA_HOME%\jre\bin; 目的是可以在任意地方使用javac java 比较简单,不然要输入整个javac java指令路径.
配置classpath: ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.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
基础知识总结之 jdk部分的更多相关文章
- 计算机基础知识以及java JDK、JRE
计算机 计算机(Computer)全称:电子计算机,是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- maven基础知识
1.maven基础知识 1.1maven坐标 maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version.项目包含了junit3. ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- Java之--Java基础知识
一.软件基础知识 1.软件:一系列按特定顺序组织的计算机数据和指令的集合. 1)系统软件:DOS.windows.linux. 2)应用软件:QQ.扫雷等. 2.软件开发就是制作软件. 3.人与计算机 ...
- Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
随机推荐
- ProcessBuilder执行本地命令
/**关键技术剖析 * 用本命令名和命令的参数选项构造ProcessBuilder对象,它的start方法执行命令,启动一个进程,返回一个Process对象 * ProcessBuilder的envi ...
- 从WebView跳到普通View
本文转载至 http://pingguohe.net/2011/06/25/webview_to_nativeview/ 做网络ios应用难免要用到UIWebViewController,直接嵌入一个 ...
- 指针与C++基本原理
面向对象编程与传统的过程性编程的区别在于,OOP强调的是在运行阶段(而不是编译阶段)进行决策.运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时.运行阶段决策就好比度假时,选择参观那些 ...
- 模拟window桌面实现
正在开发中的游戏有个全屏功能--可以在window桌面背景上运行,就像一些视频播放器在桌面背景上播放一样的,花了个上午整了个Demo放出来留个纪念. 实现功能:显示图标,双击图标执行相应的程序,右击图 ...
- jquery与javescript的区别(一)
一.找元素: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g ...
- ios 给UIImageView添加阴影
_borderView.layer.shadowColor = [UIColor grayColor].CGColor; _borderView.layer.shadowOffset = CGSize ...
- 160331、使用@Controller注解为什么要配置<mvc:annotation-driven />
为了解决静态资源访问的问题,servlet改成了拦截所有请求,即/,并添加了默认的servlet,这时候*.do请求不能被控制器捕捉了,页面错误为404.直到添加了<mvc:annotation ...
- Storm-源码分析-LocalState (backtype.storm.utils)
LocalState A simple, durable, atomic K/V database. *Very inefficient*, should only be used for occas ...
- springData 整合 Rrdis
导包(使用maven的话,采用坐标的方式) <!-- redis nosql 内存数据库 --> <dependency> <groupId>redis.clien ...
- Spring Data之Hello World
1. 概述 SpringData : 注意目标是使数据库的访问变得方便快捷;支持NoSQL和关系数据存储; 支持NoSQL存储: MongoDB(文档数据库) Neo4j(图形数据库) Redis(键 ...