`
beike
  • 浏览: 362829 次
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
转自 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

分享到:
评论

相关推荐

    LayaBox图集转单图工具

    3. **参数设置**:在批处理文件中,可能需要根据实际情况调整参数,比如图集文件路径、输出目录等。 4. **执行转换**:执行后,`LayaAtlas.jar`会解析图集文件,并将每个小图切割出来,保存为单独的图片文件,一般...

    sqlite.JAR包

    `sqlite.JAR包`是SQLite的Java JDBC驱动程序的集合,它包含了实现JDBC接口的所有必要类和方法,使得Java程序能够像操作其他主流数据库(如MySQL、Oracle等)一样操作SQLite数据库。这个JAR包通常会包含以下组件: 1...

    bat 运行java main方法

    保存位置应与`jar`文件在同一目录下,因为`bat`文件中的路径不支持空格,所以确保所有路径都正确无误。 4. 双击`runMyApp.bat`,如果一切设置正确,Java程序将由`bat`文件启动,并执行`main`方法。 这里有几个关键...

    Datax实现增量同步数据到Postgres

    4. **jar 包替换**:在描述中提到的"将压缩包中的俩个jar包替换到datax包中",意味着我们需要将 `plugin-rdbms-util-0.0.1-SNAPSHOT.jar` 和 `postgresqlwriter-0.0.1-SNAPSHOT.jar` 这两个特定版本的插件替换到...

    sqljdbc42_sqlserver_jdbc_Driver_zip_驱动_

    这个驱动程序通常以JAR(Java Archive)文件的形式分发,例如压缩包内的"sqljdbc42.jar",这个文件包含了所有必要的类和资源,以便Java应用程序能够识别并加载该驱动,从而建立到SQL Server的连接。 使用这个驱动...

    js,css压缩工具

    针对整个项目或目录的压缩需求,该工具可以一次性处理所有包含的JS和CSS文件,包括子目录中的文件。这样,用户不必担心遗漏任何需要压缩的文件,确保项目的全面优化。 5. **单个JS, CSS文件压缩** 当你需要单独...

    服务器安装1

    在本例中,`RFIDSYS`可能是某个特定的应用,它的配置文件`rfidsite.properties`位于`WEB-INF\classes`目录下,可能包含了应用的数据库连接信息。 4. **数据库配置**: - 对于RFIDSYS应用,需要在`rfidsite....

    Java连接mysql数据库攻略.pdf

    在Java中连接MySQL,我们需要导入JDBC驱动的jar包到项目类路径中,如`mysql-connector-java-3.1.8.jar`。以下是连接的基本步骤: 1. 加载JDBC驱动:`Class.forName("com.mysql.jdbc.Driver")`。 2. 创建数据库连接:...

    根据url下载图片

    在Java中,`Properties`类常用于存储和加载配置信息。 为了实现这个功能,开发者可能编写了一个简单的线程池来并发处理多个URL,以提高下载效率。同时,他们可能还添加了一些错误处理机制,以应对网络不稳定或URL...

    commons-fileupload详解

    下载完成后,从`commons-fileupload-1.0.zip`压缩包中解压出`commons-fileupload-1.0.jar`文件,并将其放置于`的安装目录>\webapps\fileupload\WEB-INF\lib`目录下。 4. **设置编译环境** 创建`src`目录用于存放...

    用JAVA读取硬盘序列号

    在分析和使用这个Java程序时,我们需要了解JNI的工作原理,如何编译和加载本地库,以及如何在Java中调用这些本地方法。此外,还需要理解操作系统级别的硬盘管理接口,以便正确地解析和使用硬盘序列号。同时,安全性...

    JAVA连接MySQL数据库学习.zip

    在这个例子中,我们连接到名为`testdb`的数据库,执行了一个查询所有`users`表中的记录的SQL语句,并打印出结果。 此外,你还可以学习更多高级主题,比如事务管理、批处理操作、存储过程的调用,以及使用ORM框架如...

    org.osgi.framework.BundleException-glassfish

    这可能是由于代码中存在未初始化的对象引用,或者在处理捆绑包时,某个必需的资源或服务为null导致的。 标签“源码”提示我们,这个问题可能需要深入到Glassfish和OSGi的源代码层面去理解。通过查看源代码,开发者...

    jsp的各种问题

    - **问题**: 在JAR文件中,所有类文件必须以对应包的目录结构存放。 - **答案**: 真。 - **解释**: 在JAR文件中,类文件确实是以对应的包目录结构来组织的,这有助于避免类名冲突。 #### 二十八、JSP页面结构 - ...

    depends.rar

    5. **脚本和批处理文件**:安装或部署过程中可能需要运行的.sh、.bat或.cmd文件,它们用于自动化某些任务,比如设置环境变量、复制文件或安装依赖。 6. **文档和许可证**:可能包含关于如何使用这些依赖项的README...

    apache-openjpa-2.2.1-binary

    2. **懒加载(Lazy Loading)**:OpenJPA支持懒加载策略,即只有当真正需要某个关联的对象时,才会去数据库加载,从而提高程序的运行效率。 3. **缓存机制**:OpenJPA提供了一级缓存和二级缓存,一级缓存是事务级别...

    Hibernate学习.pdf

    - **组件映射**: 将Java对象中的某个属性映射为数据库表中的多个字段。 #### 8. 继承映射 - **继承映射**: 支持多种继承策略,如单表继承、类表继承和子类表继承等。 #### 9. 对象操作 - **查询**: 使用HQL或...

    java jdk实列宝典 光盘源代码

    定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain....

    Ajax/dwr小事例

    1. **引入DWR库**:在项目中添加DWR的JAR包,并配置web.xml文件,声明DWR的Servlet。 2. **创建Java类**:编写服务器端的Java类,包含需要暴露给JavaScript的方法。 3. **生成配置文件**:使用DWR生成器(如dwr-gen....

Global site tag (gtag.js) - Google Analytics