在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

Java 6中类路径ClassPath对通配符的支持的更多相关文章

  1. java类路径classpath和包

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. 【转】Java Web 项目获取运行时路径 classpath

    Java Web 项目获取运行时路径 classpath 假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么ja ...

  3. java类路径classpath

    java编译器编译.java文件和java虚拟机执行.class文件时的路径和写法不一样. 在没有设置任何classpath环境变量的情况下,javac可以编译全路径的.java文件.例如: java ...

  4. Java的Package和Classpath

    Package 在Java中,Package是用来包含一系相关实例的集合.这些相关联的实例包括:类.接口.异常.错误以及枚举. Package主要有一些的几点作用: Package可以处理名字冲突,在 ...

  5. paip兼容windows与linux的java类根目录路径的方法

    paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...

  6. Java中的路径问题

    Java中的路径问题 代码说明,如下: package com.merlin.test; import java.io.InputStream; public class Test { public ...

  7. java web项目 。classpath 文件解析

    eclipse工程中.classpath文件含义: 下面是一个.classpath文件内容: < ?xml version="1.0" encoding="UTF- ...

  8. java 使用相对路径读取文件

    java 使用相对路径读取文件 1.java project环境,使用java.io用相对路径读取文件的例子: *目录结构:  DecisionTree            |___src      ...

  9. Java的绝对路径和相对路径

    Java的绝对路径和相对路径 参考:http://blog.csdn.net/u011225629/article/details/46872775 1. 绝对路径 以根部件开始的路径是绝对路径,比如 ...

随机推荐

  1. poj——2891 Strange Way to Express Integers

    Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 16839 ...

  2. Eclipse修改默认包路径的起始文件夹

    一般新建的Java Project项目都是从src文件夹开始的,那么通过下面的操作可以自定义修改起始文件夹. 1.项目右键->[Properties] 如果不能修改时,可以直接删除后再添加回来.

  3. Linux: 通过命令行上传文件到ftp服务器

    url -T fie-name ftp://server-address --user user:password

  4. Scope Is the Enemy of Success

     Scope Is the Enemy of Success Dave Quick SCopE REFERS To A pRojECT'S SizE. How much time, effort, ...

  5. iOS开发——代码生成TabBar与视图切换具体解释

    我在之前多篇博客中解说了在不使用storyboard而使用nib文件的情况下.使用代码生成导航栏并进行跳转,具体能够參考<iOS开发--界面跳转与返回及视图类型具体解释><iOS纯代 ...

  6. Python3基础(六) 深入list列表

    正如Python FAQ1附录中说的, Python中任何值都是一个对象,所以任何类型(int.str.list-)都是一个类.而类就必然有它的方法或属性,我们要记下这么多类的所有方法显然是不可能的, ...

  7. cc2540 usbdongle 安装驱动失败的终极解决方法 【原创,多图】

    Ghost winxp win7系统安装CC2540 usbdongle CDC驱动程序 [重要提示] 因为非常多朋友使用Ghost系统.导致安装cdc驱动时安装不成功,出现 "INF中的服 ...

  8. CloudEngine 6800基础配置-02_常用命令操作

    查看未提交配置   system-view ftp server enable display configuration candidate   删除未提交的配置 clear configurati ...

  9. NSDate 格式化 及 互转

    /* NSDateFormatter的作用 1.NSString -> NSDate 2.NSDate -> NSString */ void fmt_date_to_string(); ...

  10. iOS开发- SceneKit

    打开你的Xcode 6然后新建一个项目,选择iOS/Application/Game模板然后点击Next. 将项目命名为QuickStart,选择开发语言为Swift,然后游戏选用的平台技术选择为Sc ...