您的位置:首页 > 其它

【转】在批处理中加载某个目录所有的jar

2016-01-25 16:28 417 查看
原文:http://www.blogjava.net/lifesting/archive/2008/04/13/192562.html
 
我平常做服务器或者应用程序的时候喜欢把各种依赖包如log4j, jdbc, commons-lang等放到一个lib目录下,然后启动的时候将这些jar包设置到classpath上。以前我经常使用set classpath=log4j.jar;jdbc.jar;commons-lang.jar硬加载,但问题就是每新加入一个jar,就得改批处理一次,再就是每开发一个就得这么设置一次。很烦人,perl 创始人说,偷懒的程序员才是好程序员:),我需要一个通用的加载方式。

不管linux/windows或其它OS,都提供一个shell与kernel交互,并且shell都有一个类似的for内置commnd。

下面是linux bash的尝试


#!/usr/bin/sh




clspath="bootstrap.jar"


for k in *.jar


do


 clspath=$clspath:$PWD/$k


 echo "current jar is $k."


done


printf "classpath is %s" $clspath



工作的很好,于是在windows同样try了一下batch


@echo off




set clspath=bootstrap.jar


for %%j in (*.jar) do (


set clspath=%clspath%;%cd%\%%j


echo current jar is %%j.


)


echo classpath is %clspath%
很奇怪的是最后的结果却是 classpath is bootstrap.jar;D:\workflow\bingo\lib\servlet-api.jar。很显然batch默认不支持变量迭代更改
google了一下,发现原因,稍微改一下:
 
 1

@echo off
 2


 3

set clspath=bootstrap.jar
 4

setlocal enabledelayedexpansion
 5

for %%j in (*.jar) do (
 6

set clspath=!clspath!;%cd%\%%j
 7

echo current jar is %%j.
 8

)
 9

echo classpath is %clspath%
10

endlocal

对比一下,可以发现:

第4行加上了setlocal enabledelayedexpansion,即变量延迟展开。

第10行有一个endlocal,结束这个设置

第6行把%classpath%变成了!classpath!。
虽然目的达到了,还是要鄙视微软的dos batch,实在很弱,不知Powershell怎样。

参考资料:
   setlocal


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

阅读(350) | 评论(0) | 转发(0) |

0
上一篇:【转】jar参数运行应用时classpath的设置方法

下一篇:[转]java的System.getProperty()方法可以获取的值

相关热门文章
View与ViewGroup的概念

关于ip_conntrack跟踪连接满导...

我的第一个python程序之续集...

HTML5 音视频媒体处理相关...

欢迎进攻高于所有在ChinaUnix...

Tomcat 6 配置SSI

tomcat + ssi

JDK1.6官方下载_JDK6官方下载_...

Java 判断文件夹、文件是否存...

如何正确(完美)卸载Java/JDK/J...

linux dhcp peizhi roc

关于Unix文件的软链接

求教这个命令什么意思,我是新...

sed -e "/grep/d" 是什么意思...

谁能够帮我解决LINUX 2.6 10...

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: