请问,我在windows2000的 cmd环境下调用了set classpath="@@@"命令,
然后再调用set命令,显示这个时候classpath是我修改后的值
但是如果我关闭cmd后又重新启动cmd再调用set
classpath变成了系统参数里面的classpath值了。
请问在cmd下调用set classpath=
这句话对classpath的有效期间是多久?
如果要通过命令或者编程对系统参数里面的classpath进行修改,怎么做???
---------
这个问题,如果你不关闭cmd窗口,则有效期直到你输入下一次set classpath命令为止
**************
如果要通过命令或者编程对系统参数里面的classpath进行修改,怎么做?
你没事用程序改classpath干吗??改了后有可能以前能用的程序都不能再用了
编程的话,可以用Runtime.exec来执行set classpath命令,这样可以改变classpath??
如果在CMD窗口内更改的classpath,那么在当前窗口内一直有效,直到你关闭当前窗口!对于其余的cmd窗口没有任何影响。
在系统属性里设计的classpath,则是针对每个cmd窗口都有效的,除非你改变它!
---
Windows里面的环境变量长度确实是受限制的,我通常也使用两种方法:
(1)如果使用某种Web Application server,就将jar文件放在WEB-INF/lib目录下,
这样就不需要修改CLASSPATH环境变量了,这个和li_haizhou(阿土)的做法相同,
而且我也感觉这样最好了。
(2)如果你要加的jar文件是:C:\j2sdk1.4.2_07\lib\tools.jar;
你可以先建一个系统变量,例如:JDKLIB,这样刚才的那条jar文件就可以改成:
%JDKLIB%\tools.jar
我经常都是这么做的,不过如果你要是不加太多的jar文件,一般是够用的,
也不用非得这么做。
------------
有一个种方法就是在需要执行的jar文件中的MAINFEST文件设置CLASSPATH,这样的方法很容易写错名字也不适合随时添加删除lib文件夹中的.jar文件,因为每次添加删除就需要修改MAINFEST文件的CLASSPATH
查到不少如何将一个目录的jar包设置为classpath,但是如果设置完以后执行java -jar命令去执行一个jar包,前面的设置会被默认屏蔽了。
解决的方法就是把要执行的jar包也设置到classpath中去,然后执行普通的java命令运行jar包中的class文件
例如,windows中制作一个run.bat文件,内容为:
SetLocal EnableDelayedExpansion???
set CLASSPATH=.
FOR %%i IN ("lib\*.jar") DO SET CLASSPATH=!CLASSPATH!;%%i????????????? //这儿一定要是!不是%
set CLASSPATH=%CLASSPATH%;JOSP.jar???????????????????????????????????????????????????? //这是我要执行的jar文件
echo %CLASSPATH%
java -cp %CLASSPATH% jospserver.ospserver 192.168.100.206 7 chenyi //jospserver为package名,ospserver 为class名,后面是我程序需要的运行参数
在linux中就制作一个shell命令,run.sh,内容为:
#!/bin/sh
#获取当前目录
PWD=`pwd`
CLASSPATH=$PWD/JOSP.jar:"$CLASSPATH"
for i in lib/*.jar;
do CLASSPATH=$PWD/$i:"$CLASSPATH";
done
export CLASSPATH=.:$CLASSPATH
java -cp $CLASSPATH jospserver.ospserver 192.168.100.206 7 chenyi
这样就省去了设置JOSP.jar文件中MAINFEST里面的classpath参数,而且可以根据需要添加和删除lib文件夹中的.jar文件而不需要修改MAINFEST
本文来源【学网】网站链接是http://www.xue5.com