1、为什么安装完jdk后不配置环境变量就能直接运行java,而不能运行javac

  在安装jdk的时候jdk会自带一个jre(java运行环境),还会单独安装一个jre,默认路径是和jdk在同级目录,而且会将这个jre/bin/java.exe拷贝一份到C:\Windows\System32\目录中,而这个目录在系统安装的时候就被配置到了环境变量中,所以能运行java。

  不能运行javac是因为javac.exe是位于%JAVA_HOME%\bin目录下面,这个可执行文件没有被配置到环境变量PATH中;

2、为什么配置CLASSPATH系统变量

  CLASSPATH系统变量为类查找路径

    1、在使用javac进行编译时遇到import时候就会通过这个变量里面配置的路径去查找。如果配置的是目录,则会查找目录下的.class或.java(.java会自动编译出.class)的类文件,如果是.jar文件,则会引用.jar中的类,也可以通过javac -cp 进行指定CLASSPATH

    2、使用java运行java程序的时候import类的查找顺序为

      jre/lib中的*.jar,或被-Xbootclasspath参数指定的路径中的.jar(由启动类加载器加载)

      jre/lib/ext子孙目录中的.class和子文件中的*.jar文件,或者由java.ext.dirs系统变量指定的目录和文件(扩展类加载器加载)

      CLASSPATH中配置目录的子孙目录中的.class和配置的.jar中的类(应用程序类加载器加载)

3、问什么CLASSPATH配置 “.;” 和;tools.jar   

  配置CLASSPATH的开头使用.;表示在使用java或javac优先从当前目录查找类资源;tools.jar 是系统用来编译一个类的时候用到的,jps,javap,jstat,jstack等Java工具也使用到了tools.jar中的一些api,其实使用javac命令进行编译的时候已经封装了tools.jar,所以可以不用配置到CLASSPATH中;

关于javac和java的更多相关文章

  1. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  2. windows命令行下简单使用javac、java、javap详细演示

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...

  3. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  4. Java—javac Hello.java找不到文件

    刚开始编写Java代码时,会遇到很多困难,下面来说一个比较常见的错误,如下: 对于初学者,一般都是从Hello,World开始的学起的,废了好大劲儿,铜鼓了半天,终于要在DOS上运行javac Hel ...

  5. 解决javac和java命令在Mac OSX终端里的乱码问题

    转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...

  6. 如何用javac 和java 编译运行整个Java工程

    转自:http://blog.csdn.net/huagong_adu/article/details/6929817      前言:本文教你怎么用javac和Java命令,以及如何利用脚本(she ...

  7. Windows中将javac和java两个命令集成到UltraEdit工具栏

    1. 目的 将javac和java两个命令集成到UltraEdit工具栏,以方便在UltraEdit中编辑简单的java文件后,能够直接进行编译,运行. 2. 环境 UrtalEdit版本18.20: ...

  8. javac和java的使用

    java -Xmx128m -Dfile.encoding=gbk -cp ./;bin/;./*;lib/* com.qianlima.crawlOthers.Icp REM REM block e ...

  9. javac -cp java -cp

    ///////////////////////////////////////////////////////////////////////////////////// 编译java文件的命令都知道 ...

  10. eclipse 中添加自定义 classpath 的方法,以及 javac 和 java 的一些使用细节

    目标: 将 ~/java 加入classpath eclipse: 右键选中 Project, Properties, Java Build Path, Libraries, Add External ...

随机推荐

  1. LevelDB源码分析-编码

    编码(util/coding.h util/coding.cc) LevelDB将整型编码为二进制字符串的形式,同时又能够和ASCII字符区分. 首先是定长编码: void EncodeFixed32 ...

  2. Delphi TXLSReadWriteII 导出EXCEL

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. Netty4.0源码解析 NioServerSocketChannel

    一.引言Netty的Channel在JDK NIO的Channel基础上做了一层封装,提供了更多的功能.Netty的中的Channel实现类主要有:NioServerSocketChannel(用于服 ...

  4. Oracle一次Insert多条数据

    insert all into JK_TB_DATE (fbmmc,fgzjh,fsbmc,fsbxh,fsbbh,db_shuifenyi,db_pihao,db_wuliaobianma) ',' ...

  5. 《java与模式》阅读笔记02

    java语言的接口 在之前的编程作业中,我或多或少都用到了java的接口,但是接口的具体意思是什么,又该如何更好的使用呢?这个确实一知半解,带着这个问题我读了关于这些内容的章节. 所谓接口(inter ...

  6. python 网络编程 缓冲和粘包

    tcp:属于长连接,与一个客户端进行连接了以后,其他的客户端要等待,要连接另外一个,必须优雅的断开前面这个客户端的连接. 允许地址重用:在bind IP地址和端口之前加上,# server.setso ...

  7. js中遇到的一些方法和函数

    这是一个笔记文章,方便日后复习. 加号的优先级高于三目运算符: console.log(') ? 'define' : 'undefine');//define setTimeout(code,mil ...

  8. 【测试工具】Macaca 自动遍历器 NoSmoke

    Macaca 提供的基础能力上研发出了一套多端深度遍历爬虫工具. 希望可以最大化减少UI 测试脚本的编写涵盖以下功能点: 支持iOS, Android,PC-Web 三个平台的自动化测试 同时可以通过 ...

  9. Python: 下载底层由Python2转Python3环境更新手记

    谨记录运行环境改变过程中所碰到的坑. 下载底层运行环境由Python2移至Python3所遇到的问题及处理方法: 1.所引的第三方组件,基本都有替代支持:msvcr90.dll不再需要,有则报错2.引 ...

  10. 单点登录(SSO)原理与案例

    单点登录业务流程 概要 详细流程 单点登录系统一共有三个模块,1.服务端 2.客户端 3.代理模块端 用户发送访问客户端的请求,被客户端的代理模块的拦截器拦截,判断cookie中是否含有token(令 ...