1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* Copyright (C) 2001, 2003 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.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.security.CodeSource;
- import java.util.Enumeration;
- import java.util.Vector;
- /**
- * A ClassLoader backed by a gcj-compiled shared library.
- * @author Per Bothner <per@bothner.com>, Brainfood Inc.
- */
- public class SharedLibLoader extends ClassLoader
- {
- /** Load a shared library, and associate a ClassLoader with it.
- * @param libname named of shared library (passed to dlopen)
- * @param parent the parent ClassLoader
- * @parem flags passed to dlopen
- */
- public SharedLibLoader(String libname, ClassLoader parent, int flags)
- {
- super(parent);
- URL url;
- try
- {
- url = new URL("file", "", libname);
- }
- catch (MalformedURLException _)
- {
- url = null;
- }
- helper = SharedLibHelper.findHelper(this, libname,
- new CodeSource(url, null), true);
- }
- /** Load a shared library, and asociate a ClassLoader with it.
- * @param libname named of shared library (passed to dlopen)
- */
- public SharedLibLoader(String libname)
- {
- this(libname, getSystemClassLoader(), 0);
- }
- public Class findClass(String name)
- throws ClassNotFoundException
- {
- Class cls = helper.findClass(name);
- if (cls == null)
- throw new ClassNotFoundException(name);
- return cls;
- }
- public URL findResource (String name)
- {
- return helper.findResource(name);
- }
- public Enumeration findResources (String name) throws IOException
- {
- URL url = findResource(name);
- if (url == null)
- return null;
- Vector v = new Vector(1);
- v.add(url);
- return v.elements();
- }
- /** The helper that does the work for us. */
- SharedLibHelper helper;
- }
|