zoukankan      html  css  js  c++  java
  • 一文彻底搞懂Java中的环境变量

    一文搞懂Java环境变量及Java的基本指令参数

    记得刚接触Java,第一件事就是配环境变量,作为一个初学者,只知道环境变量怎样配,在加上各种IDE使我们能方便的开发,而忽略了其本质的东西,只知其然不知其所以然,随着不断的深入,终于明白了Java环境变量所代表的的含义。

    首先我们来看一下Java中的环境变量,以我自己的为例

    • JAVA_HOME:C:Program FilesJavajdk1.8.0_144
    • PATH:%JAVA_HOME%in
    • CLASSPATH:.(英文下的一个. 有的版本是.; 还有后面跟这样的.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;)

    在Linux下的环境变量
    Snipaste_2019-07-27_21-32-09.jpg

    我们先来来解决第一个问题,我们为什么要配置环境变量?

    说起配置环境变量,如果我们不配置就不能运行java程序了吗?答案显示是只要安装了jdk(或者jre)我们我们就能运行.class的文件,但是此时在运行时想要运行成功,怎应该用如下方式:
    Snipaste_2019-07-27_21-48-37.jpg

    而配好环境变量后编译运行的过程为:
    Snipaste_2019-07-27_22-03-54.jpg

    从中我们可以看出环境变量的作用是帮我们省去了java、javac命令前的绝对路径,但其功能可以直接使用。

    我们在来看看Windows中内置的环境变量:
    Snipaste_2019-07-27_22-22-05.jpg

    我们关注其中的%SystemRoot%system32

    Snipaste_2019-07-27_22-36-23.jpg

    %SystemRoot%system32文件夹下放的正是Windows的系统文件,如cmd.exe、calc.exe、dxdiag.exe、msconfig.exe等,这些文件的可以之间在cmd下输入文件名就可以直接运行,但是如果把环境变量中的%SystemRoot%system32删掉后,就不能运行这些程序。

    到现在我想对环境变量大家应该有一个深刻的认识了:配好境变量后,当我们运行程序时,系统会自动在环境变量对应的目录下去找我们所要执行的程序,因此省去了命令前的一大串绝对路径。

    最后我们来详细的探究一下java环境变量的具体作用:

    • JAVA_HOME:C:Program FilesJavajdk1.8.0_144

      JAVA_HOME是指定jdk的安装目录

    • PATH:%JAVA_HOME%in

      PATH是指定JAVA命令所在的目录

    • CLASSPATH:.(英文下的一个. 有的版本是.; 还有后面跟这样的.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;)

      CLASSPATH是指定所要执行的字节码(.class)文件的位置

      可以通过一个简单的例子来理解CLASSPATH
      Snipaste_2019-07-27_22-53-29.jpg
      虽然Hello.class文件不再执行java Hello.class命令的目录下,但是通过参数-classpath指定.class文件的位置任然可以运行Hello.class文件。

    CLASSPATH的一个小例子

    CLASSPATH表示所要执行的字节码(.class)文件的位置。

    我们可以定义一个自己专属的工具包,然后把它打成jar包,然后把这个jar包的绝对路径配置在CLASSPATH中,然后就可以在字节的类中调用这个jar包中的类。具体步骤如下:

    1、先建一个属于自己的类

    package com.minghai;
    
    public class Hello {
        public static void say(){
            System.out.println("Hello my name is mingahi");
        }
    }
    

    2、然后把类打成jar包

    通过jar -cvf hello.jar Hello.class命令生成一个名为hello.jar的jar包。

    3、把这个jar的绝对路径配置到CLASSPATH环境变量中
    Snipaste_2019-07-31_19-15-14.jpg
    4、定义一个自定义的类,调用“自定义的工具类”

    package net.minghai;
    import com.minghai.Hello;
    public class MyHello{
    	public static void main(String[] arg){
    		Hello.say();
    	}
    }
    

    5、在自定义的类目录下,直接编译运行该类,它需的“工具类”(Hello)会自己去CLASSPATH目录下定义的目录中寻找
    Snipaste_2019-07-31_19-21-49.jpg

  • 相关阅读:
    js学习笔记
    在 Windows 下远程桌面连接 Linux XManager 篇
    使用多种反病毒引擎扫描文件
    光纤接口小知识
    在 Windows 下远程桌面连接 Linux VNC 篇
    基于 RHEL 的 CentOS 5.5 发布
    安装Windows 7的XP模式的步骤
    跨平台加密版 SQLite 3 wxSQLite3
    Free 的迷思
    使用 iptables 限制黑客猜密码
  • 原文地址:https://www.cnblogs.com/minghaiJ/p/11257762.html
Copyright © 2011-2022 走看看