最全最易理解的环境变量!

oen【引导】(先关注我呀!

首先,我们为了能够编译和运行java程序,需要在PATH环境变量中把java.exe所在的目录设置为 PATH变量的一部分,目的是为了能够通过命令行运行javac和java命令成为可能。

当你在命令行中输入javac ...或者java ...的时候,如果提示你一个错误:'javac' 不是内部命令或外部命令,也不是可运行的程序或批处理文件。这时候说明操作系统没有找到你通过命令行输入的javac这个命令。

为什么呢?因为操作系统并 不知道你的javac.exe这个文件在哪里,所以无法执行对应的文件。

那么为了能够让操作系统找到这个可执行文件,我们就需要把javac.exe这个 可执行文件所在的目录作为PATH环境变量的一部分设置起来,这样当你在命令行输入一个命令的时候,操作系统就会自动搜索PATH变量中所指定的所有目录 了。

在Windows系统中PATH变量中的所有路径采用分号分割,如果在Linux系统中采用冒号分割。

PS,如果你设置好了环境变量,在命令 行中还是出现同样的错误,那么有两种可能,一种就是你的设置不正确,另一种就是你的设置没有生效,一般你可以关闭命令行窗口再重新打开就可以了。

two【概述】(萌新求关注呀!

①环境变量就是一个系统的路径,当用到相关的东西,它会从环境变量中来查找需要的东西.

首先简单的说明如何设置环境变量

1.安装JDK后,假设把JDK安装在D:\Java\jdk1.5.0_06

2.然后在我的电脑上单击鼠标右键→选择属性→选择高级→环境变量

(win10 在控制面板(win+x)→系统与安全→系统→高级系统设置→环境变量)

3.新建用户变量 CLASSPATH 变量值 .;D:\Java\jdk1.5.0_06\lib\tools.jar;

(“.”意味在当前目录下找被编译的类,后文有解释)

4.新建系统变量 JAVA_HOME 变量值 D:\Java\jdk1.5.0_06

5.编辑系统变量 Path 变量值 %JAVA_HOME%\bin;

PS将 PATH的内容修改为:...;%JAVA_HOME%\bin是因为,当你的系统中重新安装JDK,并改变过目录的话,你只要修改 JAVA_HOME的内容就可以了,PATH则不需要修改。

此外,JAVA_HOME变量还会有一些其他用途,比如Eclipse这个IDE,它本身是由 java程序编写的,那么在运行的时候必然需要虚拟机的存在,所以Eclipse在启动时需要查找虚拟机,如果有JAVA_HOME这个变量,那么 Eclipse就会利用这个变量找到虚拟机的路径。

PSS具体想知道为什么,新建用户变量 CLASSPATH,新建系统变量 JAVA_HOME往后看

设定path是告诉系统,执行档程式位于什么地方。主要是执行JAVAc和JAVA这两个程式时使用的,也就是当你在命令列打入JAVAC  xxx.java和JAVA xxx时,系统要去哪那里找JAVAc和JAVA这两个执行档。

②path&classpath

path:用来制定java虚拟机(JVM)所在的路径,设定path就是告诉系统,执行档程式位于什么地方。也就是我们经常用来编译java源程序的javac.exe和执行编译后生成的.class的java.exe;(path主要是执行JAVAc和JAVA这两个程式时使用的,也就是当在命令列打入JAVAC  xxx.java和JAVA xxx时,告诉系统去哪里找JAVAc和JAVA这两个执行档。)

classpath:用来指定自己所写的和要用到类文件(.jar)的路径。

Path :Path指定一个路径列表,用于搜索可执行文件,执行一个可执行文件时,如果不能在当前路径下找到,则依次寻找path中的每一个路径,直到找到。以便正确快速运行.java程序。

(PS,设置path是因为window xp是多用户操作系统,支持不同用户的个性化系统定制,这里设置的信息只影响当前用户,而不会影响其他用户。假如只有一个用户,只是运行.class文件,则也不需要设置path环境,因为JDK安装之后会把java.exe等几个关键文件复制到c:\windows\system32目录中,而此目录已经存在于path变量,所以说用户变量path随不同用户而设置的,设置路径:“D:\jdk1.5\bin ”。)

ClassPath:指定JAVA的类文件存放路径。classpath就是指定这样一个路径,即你运行程序所需要的class文件的位置。

(设置classpath是为了将要使用到的class文件与Java中得类库文件关联起来,用以运行一些特殊的java程序,如以.jar为后缀的文件或者是javac运行java程序

设置方法是:(安装jdk是的目录为:d:\jdk1.5) 那么就在“变量值”文本框中键入“.;D:\jdk1.\lib\dt.jar;D:\jdk1.5\lib\tools.jar ”;)

three【详解】(给个赞呀

①Path和classpath区别:

1.path的作用

path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行JAVA文件,但必须把完整的路径写出来,如C:\Program Files\Java\jdk1.6.0_10\bin\javac TheClass.java。path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径;而java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找;

2.classpath的作用

classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);所以如果你没有设定,那JAVA就会跟你说它找不到。就算你是在JTable.javax.swing所在的路径指向这个命令,也要在 classpath 里面跟 Java 说要到目前所在的路径寻找JTable.javax.swing。否则JAVA还是找不到的。另外 如果 JTable.javax.swing 里面用到 b.class 時,在 classpath设定中也要包含 b.class 所在的路径。

PS.如果你想要编译在当前目录下找,就加上“.”,如:.;C:\Program Files\Java\jdk\,这样编译器就会到当前目录和C:\Program Files\Java\jdk\去找javax.swing.JTable这个类;

PSS.大多数人都是用Eclipse写程序,不设classpath也没关系,因为Eclipse有相关的配置;

path是os用

classpath java用

path里面不光有Java的bin,还可以包含许多其他的,tc啊,masm阿,只要在path中设了这些环境的路径,你在dos下的任何路径上都可以调用这些路径下的命令。

classpath是java专用的查找类的路径

②系统变量是环境变量区别

系统变量是环境变量的一种,环境变量一种仅本用户适用,另一种即系统变量整个系统的用户都适用,两者都可以在使用应用程序时提供快捷.一般在编辑java文件或者C#文件时需要修改,设计到多个文件夹之间的切换时也可以根据自己的需要设置.

简单的说就是,如果设置系统变量和用户变量,都叫做设置环境变量,设置系统变量时,该系统的所有帐号的用户都可以使用,但是设置用户变量时,其他的帐号登陆时就不一定可以使用。

下面以java环境变量为例设置方法:

1、如果是Win95/98,在\autoexec.bat的最后面添加如下3行语句:

JAVA_HOME=c:\j2sdk1.4.1

PATH=%JAVA_HOME%\bin;%PATH%

CLASSPATH=.;%JAVA_HOME%\lib

看好了CLASSPATH中第一个".",这个代表当前目录,很多人HelloWorld没有运行起来大多是这个原因。

2、如果是Win2000或者XP,使用鼠标右击"我的电脑"->属性->高级->环境变量

系统变量->新建->变量名:JAVA_HOME 变量值:c:\j2sdk1.4.1

系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib

系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;

CLASSPATH前面的那个"."和上面的意义是一样的。

3、如果是Linux用户

在你的环境中,通常我加在.bashrc文件中,你可以加在你的Profile文件中。

/usr/local/jdk 为你安装jdk的目录。

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin


HelloWorld.java经典测试代码:

public class HelloWorld{

public static void main(String args[]){

System.out.println("hello world !")

}

}

命令行输入:javac HelloWorld.java

生成HelloWorld.class

命令行输入:java HelloWorld

屏幕上打印"hello world !"

for【不建议大家设置CLASSPATH这个环境变量】

我们继续来谈论CLASSPATH的问题,很多书上在讲解java程序的时候建议大家设置CLASSPATH这个环境变量,我们这里不建议大家设置。原因 我们会在稍后的时候看到。讲到CLASSPATH,

我们首先来看编写java程序时一直在用的两个命令javac和java。

javac的命令语法是这样的:

javac <选项> <源文件>

我们常用的情况是这样的:

javac -classpath <类路径> <要编译的java源文件>

这里的类路径输入什么呢?这里的类路径是指要编译的java源文件中所用的非java的基础API中的类在那个目录下,路径可以是多个目录,用分号隔开 来。比如说我们要编译App.java这个文件,而这个文件中用到了com.util这个包中的MyDate这个类,现在我们假设MyDate这个类存在 目录是:d:\mylib\com\util\MyDate.class,那么我们如何编译App这个类呢?我们的命令如下:

javac -classpath d:\mylib App.java

注意这里的classpath的内容,我们只是指定路径到package所在目录,并不能把package一起指定进去,而且MyDate.class必 须在com\util这个目录中,因为这个类定义了package为com.util。

我们再来看java这个命令,这个命令的语法是这样的:

java [选项] 类 [参数]

比如说以上面的例子,我们假设App这个类位于com.app这个package中,它的存放目录是:d:\dev\myapp\com\app\App.class,那么我们该如何运行这个类呢?命令如下:

java -classpath d:\dev\myapp;d:\mylib com.app.App

从命令中我们可以看到,在classpath后面我们指定两个目录,分别是App这个类的package所在的目录和MyDate这个类的package 所在的目录,这里的类路径要给定的是要运行的类和这个类用到的所有类的package所在的目录,多个目录之间用分号隔离开来,最后指定要运行的类的时候 必须加上package。

如果我们在系统环境变量中设置了CLASSPATH的话,在命令行中通过 java运行的时候如果再不指定CLASSPATH参数,那么就会导致java虚拟机只是按照CLASSPATH环境变量中的目录搜索类,而不在你的当前 目录下搜索类,结果自然会出现Exception in thread "main" java.lang.NoClassDefFoundError,所以当你看到这个错误的时候请查看一下你的系统环境变量,如果没有设置 CLASSPATH,那么在检查一下你的当前目录。为了确保万无一失,按照上面讲述的例子进行操作是不会发生任何错误。

叔叔出品,必为精品。
呐,祝大家写代码愉快,我是程序媛,我为自己代言hhh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容