随笔 - 42  文章 - 71  trackbacks - 0
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Technorati 标签: ,,

自从有了Ant,好像就不用再自己写很长很长的CLASSPATH了,尤其是有时候手动编写这个变量还可能误写,导致出现了ClassNotFound错误时查了很久都不知道是怎么回事。

对于比较大的项目,搞一个Ant是很不错的事情,但是有时候就是做一些简单的测试,我就不再费力气写Ant了,直接在命令行输入命令。但是设置CLASSPATH在这个时候就比较头疼了,尤其是现在的Java应用,随便写个简单的东西可能就需要一堆的框架,就会有一堆的jar文件要加入到CLASSPATH里面了。想起来Windows的批处理有For命令,就拿来研究一下:

在命令行窗口:

set cp=

for %f in (*.jar) do set cp=%cp%;%f

echo %cp%

输出结果是:

%cp%;servlet-api.jar

这个明显是不对的啊,于是查看Windows的Set命令的帮助,发现也存在类似在编程中变量生命周期的问题,需要打开V模式才能够延展变量生命周期。默认情况下,V模式是关闭的。

于是,在命令行窗口进行如下命令:

cmd /V:ON (这一句是打开cmd的V模式)

set cp=

for %f in (*.jar) do set cp=!cp!;%f

echo %cp%

输出结果是:

;commons-el.jar;jasper-compiler-jdt.jar;jasper-compiler.jar;jasper-runtime.jar;jsp-api.jar;naming-factory-dbcp.jar;naming-factory.jar;naming-resources.jar;servlet-api.jar

 

正是我们需要的。当然了,还要加上全路径的。还有要注意的就似乎在for循环中,变量cp的引用不再是%%了,而是!!了,真是搞不懂MS怎么会这么奇怪。相比而言Unix/Linux的Shell就好很多了。

 

注意,如果是在.bat文件中运行,好像不能直接使用cmd /V:ON命令,需要手动先打开;另外,在批处理文件中的for循环的变量是要两个%来表达的,如果在批处理文件中,就得这么写:

for %%f in (*.jar) do set cp=!cp!;%%f

 

Windows的批处理文件还是很有意思的,抽空得整理的好的教程了,呵呵。

posted on 2008-05-29 00:12 YODA 阅读(3363) 评论(4)  编辑  收藏

FeedBack:
# re: 利用Windows 批处理文件自动生成CLASSPATH 2008-05-29 09:59 lingos
这个比较简单,如果*.jar是在子文件夹下呢?  回复  更多评论
  
# re: 利用Windows 批处理文件自动生成CLASSPATH 2008-05-29 10:00 YODA
for /R %f in (*.jar) do xxxxx
for命令加上/R参数就可以递归子文件夹  回复  更多评论
  
# re: 利用Windows 批处理文件自动生成CLASSPATH 2008-05-29 12:36 BeanSoft
非常有用!
@echo off
set cp=
for %%i in (".\lib\*.jar") do call setenv.bat %%i
java -cp %cp% MyApp

setenv.bat
set cp=%cp%;%1  回复  更多评论
  
# re: 利用Windows 批处理文件自动生成CLASSPATH 2008-05-29 13:46 YODA
嗯,BeanSoft写的也是一个很好的办法  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问