natRuntime.cc (insertSystemProperties): Set gnu.gcj.runtime.endorsed.dirs.

libjava:
	* java/lang/natRuntime.cc (insertSystemProperties): Set
	gnu.gcj.runtime.endorsed.dirs.
	* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Added
	HelperClassLoader.java.
	(AM_CXXFLAGS): Define GCJ_ENDORSED_DIRS.
	* gnu/gcj/runtime/VMClassLoader.java (VMClassLoader): Extends
	HelperClassLoader.
	(init): Use addDirectoriesFromProperty.
	* gnu/gcj/runtime/BootClassLoader.java (BootClassLoader): Extends
	HelperClassLoader.  Use addDirectoriesFromProperty.  Handle
	gnu.gcj.runtime.endorsed.dirs.
	* gnu/gcj/runtime/HelperClassLoader.java: New file.
gcc/java:
	* gcj.texi (libgcj Runtime Properties): Document
	gnu.gcj.runtime.endorsed.dirs.

From-SVN: r97212
This commit is contained in:
Tom Tromey 2005-03-29 22:54:04 +00:00
parent 0e2ea9b837
commit 5ef0d62ff1
1 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,67 @@
/* 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]);
}
/**
* 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);
}
}
}