转自 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
3set clspath=bootstrap.jar
4setlocal enabledelayedexpansion
5for %%j in (*.jar) do (
6set clspath=!clspath!;%cd%\%%j
7echo current jar is %%j.
9echo classpath is %clspath%
10endlocal
对比一下,可以发现:
第4行加上了setlocal enabledelayedexpansion,即变量延迟展开。
第10行有一个endlocal,结束这个设置
第6行把%classpath%变成了!classpath!。
虽然目的达到了,还是要鄙视微软的dos batch,实在很弱,不知Powershell怎样。
参考资料:
setlocal
分享到:
相关推荐
该批处理把d盘下com文件夹下的所有东西打成jar包,并放在d盘。
由于控制台程序的jar文件不能像exe文件一样双击执行,这里做了个批处理,可以让java程序达到双击运行的效果。里面有附带的示例,是我自己在编程过程中为了方便才写的,现在奉献给大家!
java打jar包批处理文件java打jar包批处理文件java打jar包批处理文件java打jar包批处理文件java打jar包批处理文件
一个工具类实现了动态加载jar包 在不重启服务器的情况下,可以调用jar包的class
linux 一键启动 jar包 批处理脚本,适用于java 项目,spring boot 一键启动,停止,重启 等,代码简洁,可直接使用.
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。
在商业化开发中经常是将开发的类打成jar包发布.由于有很多第三方的提供功能集合Jar包,所以经常会用到这些功能包.以下情景是很多Java开发人员经常碰到的:在开发,调试阶段,通过在CLASSPATH中设置第三方的jar包...
通过动态加载jar包的方式,反射调用内部方法
该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac
c标签在jsp中的加载及相关jar包.rar
因为有时测试需要启动服务,一个一个启动又太麻烦,所以写了个批处理直接一键启动所有jar包,比较简单。当然此时的cmd窗口不能关闭
java打包jar、第三方jar包、制作成.bat批处理
DexClassLoader自定义加载Assets目录下的dex、jar文件,对Assets目录下jar、dex进行加载
C#编写,打包如下面的链接,如果要直接使用,请执行release文件夹里的命令行程序,执行不了请下载.net库安装。 程序要用VS2010打开。.net库2.0以上版本就可以了。
Java 自动加载JAR文件并运行其中的类方法
jar包中类的加载及jar中资源的使用,在文件家exam1中。
功能讲解: 1.搜索分析指定路径下所有jar包中是否存在指定文件。譬方说要在jar包中查询某个**.class文件。...6.查看Class从那个jar文件加载及在jar文件中查找Class 7.快速找出Class文件所在的Jar文件
Java 动态加载jar文件示例,轻松实现插件式开发
简单介绍SQL Server 三种加载驱动和URL路径语句的方式,并提供三种加载方式JAR包