<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:49 PDT 2006 -->
<TITLE>
ClassUtils (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.utils.ClassUtils class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="ClassUtils (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ClassUtils.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/utils/ClasspathUtils.html" title="class in org.apache.axis.utils"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/utils/CLOption.html" title="class in org.apache.axis.utils"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ClassUtils.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.axis.utils</FONT>
<BR>
Class ClassUtils</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.utils.ClassUtils</B>
</PRE>
<HR>
<DL>
<DT>public final class <B>ClassUtils</B><DT>extends java.lang.Object</DL>

<P>
Utility methods for Class Loading.
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Davanum Srinvas (dims@yahoo.com), Matthew Pocock (matthew_pocock@yahoo.co.uk)</DD>
</DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#ClassUtils()">ClassUtils</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.ClassLoader</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#createClassLoader(java.lang.String, java.lang.ClassLoader)">createClassLoader</A></B>(java.lang.String&nbsp;classpath,
                  java.lang.ClassLoader&nbsp;parent)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new ClassLoader from a classpath specification and a parent
 class loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.Class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#forName(java.lang.String)">forName</A></B>(java.lang.String&nbsp;className)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use this method instead of Class.forName</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.Class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#forName(java.lang.String, boolean, java.lang.ClassLoader)">forName</A></B>(java.lang.String&nbsp;_className,
        boolean&nbsp;init,
        java.lang.ClassLoader&nbsp;_loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use this method instead of Class.forName (String className, boolean init, ClassLoader loader)</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.ClassLoader</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#getClassLoader(java.lang.String)">getClassLoader</A></B>(java.lang.String&nbsp;className)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Obtain the ClassLoader (if any) associated with the given
 className.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.ClassLoader</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#getDefaultClassLoader()">getDefaultClassLoader</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.io.InputStream</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#getResourceAsStream(java.lang.Class, java.lang.String)">getResourceAsStream</A></B>(java.lang.Class&nbsp;clazz,
                    java.lang.String&nbsp;resource)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get an input stream from a named resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.io.InputStream</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#getResourceAsStream(java.lang.Class, java.lang.String, boolean)">getResourceAsStream</A></B>(java.lang.Class&nbsp;clazz,
                    java.lang.String&nbsp;resource,
                    boolean&nbsp;checkThreadContextFirst)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get an input stream from a named resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#removeClassLoader(java.lang.String)">removeClassLoader</A></B>(java.lang.String&nbsp;className)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deregister the ClassLoader for a given className.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#setClassLoader(java.lang.String, java.lang.ClassLoader)">setClassLoader</A></B>(java.lang.String&nbsp;className,
               java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the ClassLoader associated with the given className.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/utils/ClassUtils.html#setDefaultClassLoader(java.lang.ClassLoader)">setDefaultClassLoader</A></B>(java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the default ClassLoader.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="ClassUtils()"><!-- --></A><H3>
ClassUtils</H3>
<PRE>
public <B>ClassUtils</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="setDefaultClassLoader(java.lang.ClassLoader)"><!-- --></A><H3>
setDefaultClassLoader</H3>
<PRE>
public static void <B>setDefaultClassLoader</B>(java.lang.ClassLoader&nbsp;loader)</PRE>
<DL>
<DD>Set the default ClassLoader. If loader is null, the default loader is
 not changed.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>loader</CODE> - the new default ClassLoader</DL>
</DD>
</DL>
<HR>

<A NAME="getDefaultClassLoader()"><!-- --></A><H3>
getDefaultClassLoader</H3>
<PRE>
public static java.lang.ClassLoader <B>getDefaultClassLoader</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setClassLoader(java.lang.String, java.lang.ClassLoader)"><!-- --></A><H3>
setClassLoader</H3>
<PRE>
public static void <B>setClassLoader</B>(java.lang.String&nbsp;className,
                                  java.lang.ClassLoader&nbsp;loader)</PRE>
<DL>
<DD>Set the ClassLoader associated with the given className. If either the
 class name or the loader are null, no action is performed.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>className</CODE> - the name of a class<DD><CODE>loader</CODE> - the ClassLoader for the class</DL>
</DD>
</DL>
<HR>

<A NAME="getClassLoader(java.lang.String)"><!-- --></A><H3>
getClassLoader</H3>
<PRE>
public static java.lang.ClassLoader <B>getClassLoader</B>(java.lang.String&nbsp;className)</PRE>
<DL>
<DD>Obtain the ClassLoader (if any) associated with the given
 className.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>className</CODE> - the name of a class
<DT><B>Returns:</B><DD>class loader</DL>
</DD>
</DL>
<HR>

<A NAME="removeClassLoader(java.lang.String)"><!-- --></A><H3>
removeClassLoader</H3>
<PRE>
public static void <B>removeClassLoader</B>(java.lang.String&nbsp;className)</PRE>
<DL>
<DD>Deregister the ClassLoader for a given className.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>className</CODE> - the name of a class</DL>
</DD>
</DL>
<HR>

<A NAME="forName(java.lang.String)"><!-- --></A><H3>
forName</H3>
<PRE>
public static java.lang.Class <B>forName</B>(java.lang.String&nbsp;className)
                               throws java.lang.ClassNotFoundException</PRE>
<DL>
<DD>Use this method instead of Class.forName
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>className</CODE> - Class name
<DT><B>Returns:</B><DD>java class
<DT><B>Throws:</B>
<DD><CODE>java.lang.ClassNotFoundException</CODE> - if the class is not found</DL>
</DD>
</DL>
<HR>

<A NAME="forName(java.lang.String, boolean, java.lang.ClassLoader)"><!-- --></A><H3>
forName</H3>
<PRE>
public static java.lang.Class <B>forName</B>(java.lang.String&nbsp;_className,
                                      boolean&nbsp;init,
                                      java.lang.ClassLoader&nbsp;_loader)
                               throws java.lang.ClassNotFoundException</PRE>
<DL>
<DD>Use this method instead of Class.forName (String className, boolean init, ClassLoader loader)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>_className</CODE> - Class name<DD><CODE>init</CODE> - initialize the class<DD><CODE>_loader</CODE> - class loader
<DT><B>Returns:</B><DD>java class
<DT><B>Throws:</B>
<DD><CODE>java.lang.ClassNotFoundException</CODE> - if the class is not found</DL>
</DD>
</DL>
<HR>

<A NAME="getResourceAsStream(java.lang.Class, java.lang.String, boolean)"><!-- --></A><H3>
getResourceAsStream</H3>
<PRE>
public static java.io.InputStream <B>getResourceAsStream</B>(java.lang.Class&nbsp;clazz,
                                                      java.lang.String&nbsp;resource,
                                                      boolean&nbsp;checkThreadContextFirst)</PRE>
<DL>
<DD>Get an input stream from a named resource.
 Tries
 <ol>
 <li>the classloader that loaded "clazz" first,
 <li>the system classloader
 <li>the class "clazz" itself
 </ol>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>clazz</CODE> - class to use in the lookups<DD><CODE>resource</CODE> - resource string to look for<DD><CODE>checkThreadContextFirst</CODE> - check the thread context first?
<DT><B>Returns:</B><DD>input stream if found, or null</DL>
</DD>
</DL>
<HR>

<A NAME="getResourceAsStream(java.lang.Class, java.lang.String)"><!-- --></A><H3>
getResourceAsStream</H3>
<PRE>
public static java.io.InputStream <B>getResourceAsStream</B>(java.lang.Class&nbsp;clazz,
                                                      java.lang.String&nbsp;resource)</PRE>
<DL>
<DD>Get an input stream from a named resource.
 Tries
 <ol>
 <li>the classloader that loaded "clazz" first,
 <li>the system classloader
 <li>the class "clazz" itself
 </ol>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>clazz</CODE> - class to use in the lookups<DD><CODE>resource</CODE> - resource string to look for
<DT><B>Returns:</B><DD>input stream if found, or null</DL>
</DD>
</DL>
<HR>

<A NAME="createClassLoader(java.lang.String, java.lang.ClassLoader)"><!-- --></A><H3>
createClassLoader</H3>
<PRE>
public static java.lang.ClassLoader <B>createClassLoader</B>(java.lang.String&nbsp;classpath,
                                                      java.lang.ClassLoader&nbsp;parent)
                                               throws java.lang.SecurityException</PRE>
<DL>
<DD>Creates a new ClassLoader from a classpath specification and a parent
 class loader.
 The classpath string will be split using the system path seperator
 character (e.g. : or ;), just as the java system-wide class path is
 processed.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>classpath</CODE> - the classpath String<DD><CODE>parent</CODE> - the parent ClassLoader, or null if the default is to be
     used
<DT><B>Throws:</B>
<DD><CODE>java.lang.SecurityException</CODE> - if you don't have privilages to create
         class loaders
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if your classpath string is silly</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ClassUtils.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/utils/ClasspathUtils.html" title="class in org.apache.axis.utils"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/utils/CLOption.html" title="class in org.apache.axis.utils"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ClassUtils.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
