mlaaalm 发表于 2013-2-4 21:52:12

环境变量的设置 path配置

 
Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。JAVA_HOME指向的是JDK的安装路径,如C:\JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如C:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX\xxx……设置方法:JAVA_HOME=C:\JDK_1.4.2PATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上%JAVA_HOME%\bin (注,如果你对DOS批处理不了解,你可能不明白%%引起来的内容是什么意思;其实这里是引用上一步设定好的环境变量JAVA_HOME,你写成C:\JDK_1.4.2也是可以的;你可以打开一个控制台窗口,输入echo %JAVA_HOME%来看一下你的设置结果) :PATH=%JAVA_HOME%\bin;%PATH%同样,%PATH%是引用以前你设置的PATH环境变量,你照抄以前的值就行了。CLASSPATH环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问题80%以上都可能是由于CLASSPATH设置不对引起的,所以要加倍小心才行。CLASSPATH=.;%JAVA_HOME%\lib\tools.jar首先要注意的是最前面的".;",如果你看不清,我给你念念——句点分号。这个是告诉JDK,搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,所以如果喜欢盘根究底的朋友不妨研究一下LINUX。为什么CLASSPATH后面指定了tools.jar这个具体文件?不指定行不行?显然不行,行的话我还能这么罗索嘛!:) 这个是由java语言的import机制和jar机制决定的,你可以查资料解决。具体的设定方法: win2k\xp用户右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。win9x用户修改autoexec.bat文件,在其末尾加入: set JAVA_HOME=C:\JDK_1.4.2set PATH=%JAVA_HOME%\bin;%PATH%set CLASSPATH=.;%JAVA_HOME%\lib\tools.jar就可以了。  
 
 
 
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_07
set PATH=%JAVA_HOME%\bin;%PATH%

这样就不需要在我的电脑属性中修改java_home了,以及重启命令行了。
对于程序会用到多个jre 会比较有用。

linux 修改 JAVA_HOME如下
export JAVA_HOME==/opt/jdk1.5
 
echo $JAVA_HOME
env可以显示所有环境变量
--------------------------------------------------------
C:\Documents and Settings\Administrator>echo %java_Home%
C:\Program Files\Java\jdk1.5.0_07
C:\Documents and Settings\Administrator>set java_home
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_07
C:\Documents and Settings\Administrator>
 
SET可以显示所有环境变量  (set J 效果)
---------------------------------------------------------------------------------------------------------------
SET ] 

variable 指定环境变量名称。 
string 指定要指派给变量的一系列字符。 

******************************** 
仅键入 SET 而不加参数,可以显示当前的环境变量。 

******************************** 
如果命令扩展名被启用,SET 会如下改变: 

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配 
SET 命令已使用的名称的所有变量的值。例如: 

SET P 

会显示所有以字母 P 打头的变量 

********************************* 
如果在当前环境中找不到该变量名称, SET 命令将把 ERRORLEVEL 
设置成 1。 

********************************* 
SET 命令不允许变量名含有等号。 

在 SET 命令中添加了两个新替换: 

SET /A expression 
SET /P variable= 

/A 命令选项指定等号右边的字符串为被评估的数字表达式。该表达式 
评估器很简单并以递减的优先权顺序支持下列操作: 

() - 分组 
* / % - 算数运算符 
+ - - 算数运算符 
<< >> - 逻辑移位 
- 按位“与” 
^ - 按位“异” 
| - 按位“或” 
= *= /= %= += -= - 赋值 
&= ^= |= <<= >>= 
, - 表达式分隔符 

************************************ 
如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用 
引号扩起来。在表达式中的任何非数字字符串键作为环境变量 
名称,这些环境变量名称的值已在使用前转换成数字。如果指定 
了一个环境变量名称,但未在当前环境中定义,那么值将被定为 
零。这使您可以使用环境变量值做计算而不用键入那些 % 符号 
来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的, 
那么它显示该表达式的最后值。该分配的操作符在分配的操作符 
左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制 
有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022 
相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字, 
因为 8 和 9 不是有效的八进制位数。 

/P 命令选项允许将变量数值设成用户输入的一行输入。读取输入 
行之前,显示指定的 promptString。promptString 可以是空的。 

环境变量替换已如下增强: 

%PATH:str1=str2% 

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。 
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。 
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的 
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。 

也可以为扩展名指定子字符串。 

%PATH:~10,5% 

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏 
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认 
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数, 
使用的数字则是环境变量数值长度加上指定的偏移量或长度。 

%PATH:~-10% 

会抽取 PATH 变量的最后十个字符。 

%PATH:~0,-2% 

会抽取 PATH 变量的所有字符,除了最后两个。 

终于添加了延迟环境变量扩充的支持。该支持总是按默认值被 
停用,但也可以通过 CMD.EXE 的 /V 命令行命令选项而被启用/停用。 
请参阅 CMD /? 

考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境 
变量扩充是很有用的,而不是执行的时候。以下例子说明直接 
变量扩充的问题: 

set VAR=before 
if "%VAR%" == "before" ( 
set VAR=after; 
if "%VAR%" == "after" @echo If you see this, it worked 


不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中 
的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个 
复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和 
"after",这两者永远不会相等。同样。以下这个例子也不会达到 
预期效果: 

set LIST= 
for %i in (*) do set LIST=%LIST% %i 
echo %LIST% 

原因是,它不会在目前的目录中建立一个文件列表,而只是将 
LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在 
FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量 
是空的。因此,我们真正执行的 FOR 循环是: 

for %i in (*) do set LIST= %i 

这个循环继续将 LIST 设成找到的最后一个文件。 

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行 
时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面 
例子写成以下所示,以达到预期效果: 

set VAR=before 
if "%VAR%" == "before" ( 
set VAR=after 
if "!VAR!" == "after" @echo If you see this, it worked 


set LIST= 
for %i in (*) do set LIST=!LIST! %i 
echo %LIST% 

************************************************ 
如果命令扩展名被启用,有几个动态环境变量可以被扩展,但 
不会出现在 SET 显示的变量列表中。每次变量数值被扩展时, 
这些变量数值都会被动态计算。如果用户用这些名称中任何 
一个定义变量,那个定义会替代下面描述的动态定义: 

%CD% - 扩展到当前目录字符串。 

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。 

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。 

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。 

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。 

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。 

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
页: [1]
查看完整版本: 环境变量的设置 path配置