blob: 3b48da17c5cd9b56b9a5b94d2d07dfba76017fc1 [file] [log] [blame]
/* Copyright (C) 2005 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package gnu.gcj.runtime;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.StringTokenizer;
/**
* This is a URLClassLoader that has an extra helper method for
* handling things like java.ext.dirs.
*/
class HelperClassLoader extends URLClassLoader
{
HelperClassLoader()
{
super(new URL[0]);
}
HelperClassLoader(ClassLoader parent)
{
super(new URL[0], parent);
}
/**
* This is a helper method that adds all the jar and zip files from
* a given list of paths to this class loader. The paths are taken
* from a system property whose name is provided as an argument.
*/
final void addDirectoriesFromProperty(String propName)
{
StringTokenizer st
= new StringTokenizer (System.getProperty (propName, ""),
File.pathSeparator);
try
{
while (st.hasMoreElements ())
{
String dirname = st.nextToken ();
File dir = new File (dirname);
if (dir.exists ())
{
if (! dirname.endsWith (File.separator))
dirname = dirname + File.separator;
String files[] = dir.list (new FilenameFilter ()
{
public boolean accept (File dir, String name)
{
return name.endsWith (".jar") || name.endsWith (".zip");
}
});
for (int i = files.length - 1; i >= 0; i--)
addURL(new URL("file", "", -1, dirname + files[i]));
}
}
}
catch (java.net.MalformedURLException x)
{
// This should never happen.
throw new RuntimeException(x);
}
}
}