编程之道

理顺JDK和环境变量

2018-05-09  本文已影响0人  7叶

一、JDK的安装

1、Java-Package choose

java_version

上述文档翻译:

2、3种安装包解压后的目录结构及说明

详见: JDK和JRE目录结构

3、JDK和JRE的结构辨析

**官方说明: ** JDK和JRE图示 图示说明

JDK_JRE

图示说明:

Java概念图将Java组件技术分级分类。

**分析: **

官方文档中,可知JDK与JRE相比,独有的部分是Java Language和Tools、Tools API。也就是说,JRE不具备Java应用程序开发的功能。

JDK = Server-JRE + JRE 。

javac和java命令:

jdk/bin 目录下有javac和java命令(编译、解释);而在jdk/jre/binjre/bin 目录下只有java命令(解释)。


二、环境变量(Enviroment variable)的设置及作用

环境变量: 分为用户变量和系统变量。

1、用户变量(user variable)

只对当前用户有效(windows下作用不大,linux下用处大),是为了减低自己所做的修改对他人造成的影响。

一般系统变量的路径排在用户变量之前,如果双方都有的路径,会使用系统变量中的值。

2、系统变量(System variable)

1、JAVA_HOME变量(约定名称,供JDK、其他软件使用)

顾名思义: 这是Java的家,就是JDK文件夹的所在位置(安装路径)。

新建JAVA_HOME路径C:\Program Files\Java\jdk1.8.0_131

作用: 指向JDK的安装目录:

2、CLASSPATH变量(约定名称,专为JDK而使用)

顾名思义: 这是要查找的类/class文件的所在路径,就是执行javac 命令时:要查找的类的位置和相关的类库位置。

已经不需要新建CLASSPATH路径了!!!.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

手工编译.java文件的几种情况:

假设C:\User\14002\Desktop\Print.java 是我们要编译的java源文件。

情况一:Print.java只是继承于Object类,且不需要引入外部.jar文件。

情况二:Print.java继承其他类,或者要引入其他.jar文件。但是都在同一个目录下。

情况三:Print.java继承某个父类,如MyObject.java类。或者引用某个.jar文件,如MyJar.jar。但是都不在同一个目录下。

为什么javac命令能执行?

因为在PAHT路径中配置的%JAVA_HOME%\bin 路径帮助我们找到了该目录下的javac.exe 执行命令。

CLASSPATH路径的作用?

以下内容来自《Java编程思想》。

1、Java 解释器的工作程序如下:

首先,java.exe找到环境变量CLASSPATH。

CLASSPATH 包含了一个或多个目录,它们作为一种特殊的“根”使用,从这里展开对.class 文件的搜索。

从那个根开始,解释器会寻找包名,并将每个点号(句点)替换成一个斜杠,从而生成从CLASSPATH 根开始的一个路径名(所以package foo.bar.baz 会变成foo\bar\baz 或者foo/bar/baz;具体是正斜杠还是反斜杠由操作系统决定)。

随后将它们连接到一起,成为CLASSPATH 内的各个条目(入口)。

以后搜索.class 文件时,就可从这些地方开始查找与准备创建的类名对应的名字。

此外,它也会搜索一些标准目录——这些目录与Java 解释器驻留的地方有关。

2、CLASSPATH是Java编译器(javac.exe)的一个环境变量。

它的作用是指定类搜索路径,它与import、package关键字有关。

当你写下improt java.util.* 时,编译器面对import关键字时,就知道你要引入java.util这个package中的所有类。

但是编译器如何知道你把这个package放在哪里了呢?

所以你首先得告诉编译器这个package的所在位置。如何告诉它呢?就是设置CLASSPATH啦~

如果java.util这个package在c:\jdk\ 目录下,你得把c:\jdk\这个路径设置到CLASSPATH中去!当编译器面对import java.util.* 这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java\util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!

当你自己开发一个package时,如果想要用这个package中的类;自然,你也得把这个package所在的目录设置到CLASSPATH中去!

然而,使用JAR 文件时要注意一个问题:必须将JAR文件的名字置于类路径里,而不仅仅是它所在的路径。所以对一个名为grape.jar 的JAR 文件来说,我们的类路径需要包括:CLASSPATH=.;D:\JAVA\LIB;C:\flavors\grape.jar

CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现,在你安装之后,即使完全没有设定CLASSPATH,你仍然能够编译基本的JAVA程序,并且加以执行。

可以看出,CLASSPATH 里将会包含大量备用的搜索路径。

但是,在JDK 1.5之后,就没有必要配置CLASSPATH了:

因为1.5版本以上JDK:

详见: JDK官方安装、配置说明

3、PATH变量

**path变量的作用: **

windows系统根据环境变量中的PATH变量查找命令并执行,如果找不到则出现“XXX不是内部或外部命令,也不是可运行的程序或批处理文件”错误。

path变量名不分大小写,应用程序或DOS界面会遍历path的路径来查找命令并调用。

path变量的应用举例:

path路径的作用是为DOS命令(cmd)预设一大串的可供搜索命令来匹配 的目录路径,比如在命令行想要调用mysql来登录操作或者是使用git。

mysql.exe的路径为:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe

我们在PATH中添加一段路径C:\Program Files\MySQL\MySQL Server 5.7\bin;那么,我们在cmd中直接就可以调用mysql -u root -p来进行进行登录了。

因为有对应的PATH路径存在,这条命令实际上找到了路径下的mysql.exe来执行我们的命令。

git.exe的路径为:C:\Program Files\Git\cmd\git.exe

我们在PATH中添加的路径值为C:\Program Files\Git\cmd,同理,我们可以使用git 命令来执行。

举一反三

你可以在用户变量中的Path变量中加入chrome浏览器的路径C:\Program Files (x86)\Google\Chrome\Application

那么你在cmd中输入chrome,回车。即可启动chrome浏览器。

因为chrome.exe的路径是:C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

配置JDK需要的PATH路径

顾名思义: path就是路径了,是在开发中调用相关命令如 javacjava 的所在位置。

作用: 是在任何目录下都能调用与java开发相关的命令。

追加PATH路径%JAVA_HOME%\bin;

4、路径配置图解:

- jdk1.8.0  (1、JAVA_HOME)
    | - bin  (3、PATH)
    | - jre
    | - lib
         | - dt.jar     -->  [2、CLASSPATH]
         | - tools.jar  -->  [2、CLASSPATH]  .  -->  [2、CLASSPATH]

注意: 现在已经不需要配置CLASSPATH路径了。

5、MS-DOS下手动编译、执行java文件

Dos界面: 就是windows下的MS-DOS 方式,cmd是command的缩写。可以执行一些命令。

1、在.../user/desktop/ 桌面上生成Print.java 文件:

public class Print {

    public static void main(String[] args){
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }

}

作用:打印传入的每个参数。

String[] args 的作用是:在Docs界面,把执行.class 文件时附带传进的所有参数(以空格隔开)分别存入args这个字符数组中;之后可以使用args这个数组中的参数。

2、在Dos界面

dos

3、JDK的环境变量总结

在windows下:

查看系统注册表:

小结论:


三、Linux下JDK环境变量的设置

一般来说,我们解压JDK的tar包的位置可能有:

假设现在的JDK路径为:/opt/java8/jdk1.8.0 目录。

环境变量的配置:

1、所有用户的shell都有权访问的环境变量,这种做法在多人情况下可能带来安全性问题。

1、打开配置文件:vim /etc/profile

2、输入如下内容:

export JAVA_HOME=/opt/java8/jdk1.8.0  # Tomcat运行需要JRE环境
export PATH=$JAVA_HOME/bin:$PATH  # 开发java时需要

# export是把变量导出为全局变量

3、读取、执行配置文件:source /etc/profile

4、查看JDK安装:java -version

2、用户级别的环境变量的控制,也是最靠谱的方法。

如果需要给某个用户权限使用这些环境变量,只需要修改其个人用户家目录下的.bash_profile 文件就可以了。

1、打开用户家目录下的.bash_profile 文件:vim .bash_profile

2、输入以下内容:

# 同上一致

3、重新登录

JDK的卸载:

进入JDK的安装目录的_uninst 目录,在shell终端执行命令:./uninstall.sh 即可。

上一篇 下一篇

猜你喜欢

热点阅读