Windows下JAVA环境变量的设置祥解

Windows下JAVA环境变量的设置祥解
2008-01-02 23:13
(作者:lm20224)

Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。

JAVA_HOME指向的是JDK的安装路径,如x:JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:XXXXXXxxxxxXXXXxxxxXXXXxxxxXXXXxxx……
那么,下面的步骤和以后的应用你都要受累了,呵呵。设置方法:
JAVA_HOME=x:JDK_1.4.2

PATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上%JAVA_HOME%bin (注,如果你对DOS批处理不了解,你可能不明白%%引起来的内容是什么意思;其实这里是引用上一步设定好的环境变量JAVA_HOME,你写成x:JDK_1.4.2也是可以的;你可以打开一个控制台窗口,输入echo %JAVA_HOME%来看一下你的设置结果) :
PATH=%JAVA_HOME%bin;%PATH%同样,%PATH%是引用以前你设置的PATH环境变量,你照抄以前的值就行了。

CLASSPATH环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问题80%以上都可能是由于CLASSPATH设置不对引起的,所以要加倍小心才行。
CLASSPATH=.;%JAVA_HOME%libtools.jar首先要注意的是最前面的".;",如果你看不清,我给你念念——句点反斜杠分号。这个是告诉JDK,搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,所以如果喜欢盘根究底的朋友不妨研究一下LINUX。
为什么CLASSPATH后面指定了tools.jar这个具体文件?不指定行不行?显然不行,行的话我还能这么罗索嘛!:) 这个是由java语言的import机制和jar机制决定的,你可以查资料解决。


呵呵,具体的设定方法: win2kxp用户右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。
win9x用户修改autoexec.bat文件,在其末尾加入:
set JAVA_HOME=x:JDK_1.4.2
set PATH=%JAVA_HOME%bin;%PATH%
set CLASSPATH=.;%JAVA_HOME%libtools.jar

就可以了。

(以下转自 http://www.javaeye.com/topic/53811

不管是初学Java编程,还是Java程序设计老手,都要设置环境变量,为此,不少习惯于VC编程的同学还觉得学习Java门槛高。

一般而言,课堂(网络,图书)上总会讲两种设置方法:

1.使用SET 命令编辑一个批处理文件(或者添加到autoexec.bat文件中)。

命令格式:SET [variable=[string]],其中variable 指定环境变量名称,string 指定要指派给变量的一系列字符。

比如: SET JAVA_HOME=d:javadevjdk;

(注意: 仅仅键入 SET 而不加参数,可以显示系统所有的环境变量,这些变量可以在程序设计和BAT编程中使用,例如:

ALLUSERSPROFILE=C:Documents and SettingsAll Users
COMPUTERNAME=LJP
ComSpec=C:WINDOWSsystem32cmd.exe
HOMEDRIVE=C:
HOMEPATH=Documents and SettingsXXX
OS=Windows_NT

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw
ProgramFiles=C:Program Files
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:WINDOWS
TEMP=C:DOCUME~1XXXLOCALS~1Temp
TMP=C:DOCUME~1XXXX
LOCALS~1Temp
USERDOMAIN=XXX
USERNAME=XXX
USERPROFILE=C:Documents and SettingsXXX
windir=C:WINDOWS

2.如果是在Win2000,XP操作系统下,使用鼠标右击“我的电脑”->属性->高级->环境变量

系统变量->新建->变量名:JAVA_HOME 变量值:d:javadevjdk

按照第二种方式,我们通过cmd命令打开DOS窗口时,就有了设定的环境变量

问题是,随着工具、语言等(版本控制、单元测试、自动化、perl,python、ruby...)越来越多,要设置的环境变量也越来越多,如果重装机器,使用第二种环境变量的添加方式很是烦人,这本身也是个重复的过程。有什么好办法吗?其实环境变量在注册表中放在:HKEY_LOCAL_MACHINESYSTEMControlSet001ControlSession ManagerEnvironment,如果各种工具安装位置不变(个人或团队都应该有个规范,不宜变来变去),我们把环境变量节点导出即可(通过cmd->regedit打开),日后只要双击一下该文件,就可恢复所有环境变量

[@more@]

我也是初学者,转载一篇文章,希望对你有所帮助,大家共同进步吧!

常,我们需要设置三个环境变量:JAVA_HOME、PATH 和 CLASSPATH。

JAVA_HOME:该环境变量的值就是 Java 所在的目录,一些 Java 版的软件和一些 Java 的工具需要用到该变量,设置 PATH 和 CLASSPATH 的时候,也可以使用该变量以方便设置。

PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。

CLASSPATH:也指定一个路径列表,是用于搜索 Java 编译或者运行时需要用到的类。在 CLASSPATH 列表中除了可以包含路径外,还可以包含 .jar 文件。Java 查找类时会把这个 .jar 文件当作一个目录来进行查找。通常,我们需要把 JDK 安装路径下的 jrelibrt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。

PATH 和 CLASSPATH 都指定路径列表,列表中的各项 (即各个路径) 之间使用分隔符分隔。在 Windows 下,分隔符是分号 (;),而在 Linux 下,分隔符是冒号 (:)。

下面分别说明三个环境变量在 Windows 和 Linux 下如何设置,不过在此之前,我们需要做个假设。假设 JDK 在 Windows 下的安装路径是 C:jdk,在 Linux 下的安装路径是 /usr/local/jdk/。那么,安装后的 JDK 至少会包括如下内容:

C:jdk (/usr/local/jdk)
|-- bin
|-- demo
|-- include
|-- jre
| |-- bin
| `-- lib
`-- lib

***** 在 Windows 下设置

Windows 下使用 set 命令设置环境变量,为了使每一次启动计算机都设置这些环境变量,应该在系统盘根目录下的 autoexec.bat 文件中进行设置,如:

set JAVA_HOME=C:jdk
set PATH=%JAVA_HOME%bin;C:Windows;C:WindowsCommand
set CLASSPATH=%JAVA_HOME%jrelibrt.jar;.

有些版本的 Windows 不能用 %变量名% 来替换环境变量的内容,那么就只好直接写 C:jdk 而不是 %JAVA_HOME% 了。另外,C:Windows 和 C:WindowsCommand 是 Windows 会自动加入路径的,所以可以从设置中去掉。如果在 autoexec.bat 中已经设置了 PATH,那只需要将 %JAVA_HOME%bin 加到原来设置 PATH 的那条语句中就行了。

CLASSPATH 也可以根据需要设置或者加入其它的路径,比如你想把自己写的一些类放在 C:java 中,就可以把 C:java 也添加到 CLASSPATH 中去,set CLASSPATH=%JAVA_HOME%jrelibrt.jar;C:java;.。

注意,在 CLASSPATH 中包含了一个"当前目录 (.)"。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的 Java 程序,即使该路径并未包含在 CLASSPATH 中也可以。原因很简单:虽然没有明确的把该路径包含在 CLASSPATH 中,但 CLASSPATH 中的 "." 在此时就代表了该路径,如:

假设在 C:java 目录下有可运行的类 HelloJava.class,那么

C:> set CLASSPATH=C:jdkjrelibrt.jar;. // 设置 CLASSPATH 环境变量,注意最后有一个 "."
C:> cd java // 转到 C:java 目录
C:java> java HelloJava // 运行 HelloJava
Hello, Java. // 运行结果
C:java> _

该例将在 1.3.3 节中分析。

**** 在 Linux 下设置

Linux 下使用"变量名=变量值"设置变量,并使用 export 命令将其导出为环境变量。为了使每一次登录都自动设置好这些变量,你需要在 ~/.bash_profile 里或者 ~./bashrc 里进行设置,如

export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.

设置 PATH 时用的 $JAVA_HOME 是指替换变量 JAVA_HOME 的值到 $JAVA_HOME 所在位置。如上句实际就是 export PATH=/usr/local/jdk/bin:$PATH。这句中 $PATH 也是同样的作用,不过这里的 PATH 是指以前设置的 PATH 变量的值,而非本次设置 PATH 变量的值。

注意,在 CLASSPATH 中包含了一个"当前目录 (.)"。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的 Java 程序,即使该路径并未包含在 CLASSPATH 中也可以。原因很简单:虽然没有明确的把该路径包含在 CLASSPATH 中,但 CLASSPATH 中的 "." 在此时就代表了该路径,例如

假设在 /home/fancy/java 目录下有可运行的类 HelloJava.class,那么

[fancy@matrix fancy]$ export CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:. // 设置 CLASSPATH,注意最后的"."
[fancy@matrix fancy]$ cd ~/java // 转到 /home/fancy/java
[fancy@matrix java]$ pwd // 显示当前目录
/home/fancy/java // 当前目录是 /home/fancy/java
[fancy@matrix java]$ java HelloJava // 运行 HelloJava
Hello, Java // 运行结果
[fancy@matrix java]$ _

该例将在 1.3.3 节中分析

***** 实例分析

1.3.1 节和 1.3.2 节中的用到的实际上是一样的例子,只是操作系统不同,略有差别。

两个例子都提到一个"可运行的类",它是指包含了 public static void main(String[] args) 方法的类,这将在下一章 HelloJava 一节中详述。例中的 CLASSPATH 均未包含 HelloJava.class 所在的目录(C:java, /home/fancy/java),但是均包含了当前目录 (.)。因此转到包含 HelloJava.class 的目录下去执行 java HelloJava,在 Java 寻找到 CLASSPATH 中的". (当前目录,C:java, /home/fancy/java)"时,找到了 HelloJava.class,运行成功。

2008-1-30 test it. It's OK

JSP学习笔记(1)——环境变量设置(适用于Windows 2K、XP、2003)

因为想要争取参加实习工作的需要,现在就要学习Java了,希望能把握住机会啦!刚下载了个Java2 SDK,成功的运行上了HelloWorld程序了~刚开始入门,觉得应该把所有的东西都记录在Blog的!以后也会抽时间记录自己的学习心得的。好,废话不说,说回正题了吧。在学开发之前有必要先了解一下什么是SDK,JDK,J2ME,J2SE,J2EE,JRE的,当你都搞清楚了,就继续看下去吧,不然以后遇到了你会很乱的。

首先,从Sun网站上下载jdk,当前版本为1_5_0_06(其他版本亦可)

最终下载下来的文件为jdk-1_5_0_06-windows-i586-p.exe

双击jdk-1_5_0_06-windows-i586-p.exe开始安装

默认安装到C:Program FilesJavajdk1.5.0_06,你也可以更改路径,但要记住最后选择的路径,设置环境变量的时候我们还要用到(建议c:jdk,这样干啥都方便,个人意见,呵呵),jdk安装完毕之后,还会让安装jre,一并装了吧。

全部安装完毕之后,我们就可以开始设置环境变量了。右击我的电脑,选属性,高级,环境变量,
在系统变量(S)栏点新建,出现新建系统变量对话框
在变量名(N)中填上JAVA_HOME
在变量值(V)中填上你安装jdk时所选的路径,如下图所示(点击放大):
520066921254.jpg
确定后在系统变量(S)栏再新建一个环境变量
在变量名(N)中填上CLASSPATH
在变量值(V)中填上
.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar
如下图所示(点击放大):
0200669212524.jpg

确定后在系统变量(S)栏查找并选中变量为Path的选项,点编辑
在变量值(V)的末尾添加
;%JAVA_HOME%bin;
如下图所示(点击放大):

3200669212542.jpg

确定后退出。至此,我们的环境变量已经设置完毕了。
可以编个JAVA小程序测试以下打开记事本,输入下面这个小程序,另存为HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
然后运行cmd,到HelloWorld.java所在目录,执行
javac HelloWorld.java
java HelloWorld
如下图所示(点击放大):

s20066921268.jpg
如果能正确输出Hello, World! 说明环境变量设置成功。
如果出现错误提示,请对照上述步骤,并检查HelloWorld.java程序是否输入有误,直至环境变量设置成功为止。

在这里,我说说我一开始做错的地方,希望大家能注意

初学者常犯的错误
1. 运行时,带了.class后缀
如果你试图使用如下命令:
E:javasrc>java HelloWorld.class
系统会误认为你运行的是HelloWorld包下的名为class的类文件,会到系统的CLASSPATH下(一般都包括当前目录)企图寻找HelloWorld.class.class这样的类,这样的类当然不存在了;并且也不可能存在,因为class是关键字,不能作为一个类的名字。所以会报如下错误信息:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

2. 文件名大小写错误
对于像Windows这样的系统,编译时可以不关心大小写。比如编译HelloWorld.java时,也可以使用:
E:javasrc>javac helloworld.java
也可以编译通过,但产生的类文件仍然是和源文件相符的:HelloWorld.class。
但在运行时一定要注意大小写,比如试图使用如下命令运行:
E:javasrc>java helloworld
将报类似于1中的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

3.文件名必须和类名相同!我就因为这个错误花了半个小时才调试成功的~

4.CLASSPATH系统变量值中填上“.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar”(不含双引号)千万要注意最左边是1个点哦!!!!!别漏掉了!!这个是告诉JDK,搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,满足喜欢盘根究底的朋友了吧?

好了,今天就这里吧。继续学习去!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91551/viewspace-998674/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/91551/viewspace-998674/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值