Wild Cards while specifying the class path

  • A class path entry that contains * will not match class files. To match both classes and JAR files in a single directory foo, use either foo; foo/* or foo/*;foo. The order chosen determines whether the classes and resources in foo are loaded before JAR files in foo, or vice versa.
  • Subdirectories are not searched recursively. For example, foo/* looks for JAR files only in foo, not in foo/bar, foo/baz, etc.
  • If u want to load jars files or class file in a specific order that u have to specify the list itself in the class path but not using the wild cards.
  • Expansion of wildcards is done early, prior to the invocation of a program's main method, rather than late, during the class-loading process itself. Each element of the input class path containing a wildcard is replaced by the (possibly empty) sequence of elements generated by enumerating the JAR files in the named directory. For example, if the directory foo contains a.jar, b.jar, and c.jar, then the class path foo/* is expanded into foo/a.jar; foo/b.jar; foo/c.jar, and that string would be the value of the system property java.class.path.
  • The CLASSPATH environment variable is not treated any differently from the -class path (or -cp) command-line option. That is, wildcards are honoured in all these cases. However, class path wildcards are not honoured in the Class-Path jar-manifest header.

No comments:

Post a Comment