Java 6中类路径ClassPath对通配符的支持
2024-10-21 09:50:57
在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
最新文章
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- Android 隐藏关闭软键盘
- angular.js ng-class-even ng-class-odd ng-cloak(没啥技术含量)
- 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByClassName
- 【转】PHP error_reporting() 错误控制函数功能详解
- [AngularJS] TweenList 3D + AngularJS Animate
- UVAlive3713 Astronauts(2-SAT)
- 定义Foo() 函数,弹出对话框提示当前选中的是第几个单选框
- android:padding和android:margin的区别
- IntelliJ IDEA应用[一]下载与安装
- 基于Python使用SVM识别简单的字符验证码的完整代码开源分享
- asp.net mvc 三层加EF 登录注册 增删改查
- HADOOP高可用机制
- 解决在vscode中eslint在vue后缀文件中保存时无法自动格式化的问题
- IDEA搭建SSM实现登录、注册,数据增删改查功能
- CSS多div放一行
- HDUOJ-------单词数
- 3D打印材料的发展现状(1)
- 【运维理论】RAID级别简介
- 7处ff与ie中读写html、css相关属性的不同之处
热门文章
- noip模拟赛 罪犯分组
- 魔法猪学院(codevs 1835)
- A+B Problem IV
- 模拟赛 Problem 3 经营与开发(exploit.cpp/c/pas)
- VMware 9 安装 Mac OS X 10.8 Mountain Lion 图文全程
- lua中的metatable和metamethod
- Java 注解入门实例 &;amp;&;amp; 注解传參
- Cannot update identity column &;#39;XXX&;#39;
- sql 分组取每组的前n条或每组的n%(百分之n)的数据
- HDOJ题目4417 Super Mario(划分树求区间比k小的个数+二分)