在java 6之前,如果我们的应用依赖多个jar包,通常是将所有jar包文件枚举设置到环境变量CLASSPATH或者命令行参数-classpath(-cp)中。通常我们需要写一段shell脚本实现该功能。这种方式带来的问题是命令行较长。另外在windows平台下命令行的长度是有限制(http://support.microsoft.com/kb/830473/en-us)的,这导致各种奇怪的解决方案(比如缩短jar包名称、自己实现classloader等)。

从java 6开始,我们可以在CLASSPATH环境变量或-classpath(-cp)参数中使用通配符指定多个jar包:

  • 通配符只支持*,foo/*匹配foo目录下所有以.jar或.JAR结尾的文件;
  • 如果foo目录中既有class文件又有jar文件,则只能使用foo;foo/*或foo/*;foo的方式指定。foo表示匹配foo目录下所有class文件(这和java 6以前的规则一样);
  • 通配符不支持子目录递归匹配;
  • 使用通配符匹配的jar包,其顺序是不确定的。应用程序不应该依赖于jar包加载次序;
  • 通配符的解析是在main入口调用之前进行的(这意味着main类可以放到通配符匹配的某个jar包中)。含通配符的类路径解析完成后,完整的类路径将设置到系统属性java.class.path中(可以通过System.getProperty方法获取),通过检查该属性可以获知展开后的真实类路径;
  • jar包的menifest文件中的属性Class-Path不支持通配符;

http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html

最新文章

  1. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
  2. Android 隐藏关闭软键盘
  3. angular.js ng-class-even ng-class-odd ng-cloak(没啥技术含量)
  4. 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByClassName
  5. 【转】PHP error_reporting() 错误控制函数功能详解
  6. [AngularJS] TweenList 3D + AngularJS Animate
  7. UVAlive3713 Astronauts(2-SAT)
  8. 定义Foo() 函数,弹出对话框提示当前选中的是第几个单选框
  9. android:padding和android:margin的区别
  10. IntelliJ IDEA应用[一]下载与安装
  11. 基于Python使用SVM识别简单的字符验证码的完整代码开源分享
  12. asp.net mvc 三层加EF 登录注册 增删改查
  13. HADOOP高可用机制
  14. 解决在vscode中eslint在vue后缀文件中保存时无法自动格式化的问题
  15. IDEA搭建SSM实现登录、注册,数据增删改查功能
  16. CSS多div放一行
  17. HDUOJ-------单词数
  18. 3D打印材料的发展现状(1)
  19. 【运维理论】RAID级别简介
  20. 7处ff与ie中读写html、css相关属性的不同之处

热门文章

  1. noip模拟赛 罪犯分组
  2. 魔法猪学院(codevs 1835)
  3. A+B Problem IV
  4. 模拟赛 Problem 3 经营与开发(exploit.cpp/c/pas)
  5. VMware 9 安装 Mac OS X 10.8 Mountain Lion 图文全程
  6. lua中的metatable和metamethod
  7. Java 注解入门实例 && 注解传參
  8. Cannot update identity column 'XXX'
  9. sql 分组取每组的前n条或每组的n%(百分之n)的数据
  10. HDOJ题目4417 Super Mario(划分树求区间比k小的个数+二分)