From d678e492b98fc7a29ed46b3f9d8ffade75c3bb4a Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Thu, 31 May 2001 09:25:21 +0000 Subject: [PATCH] Simplified Classloader management. Assume all jar/zip files in lib path are sucked into runtime. Assume that there is no difference between engine and client classes (mainly so as to make it easier to manage engine interaction via task registration et-al) without proliferating a billion jars. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269072 13f79535-47bb-0310-9956-ffa450edef68 --- .../launcher/LauncherClassLoader.java | 59 ------------------- .../org/apache/myrmidon/launcher/Main.java | 13 +++- 2 files changed, 12 insertions(+), 60 deletions(-) delete mode 100644 proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java deleted file mode 100644 index 011043888..000000000 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE file. - */ -package org.apache.myrmidon.launcher; - -import java.io.File; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.StringTokenizer; - -/** - * Basic classloader that allows addition of URLs at runtime. - * Used from Main.class to inject Classes into ClassLoader. - * - * @author Peter Donald - */ -public final class LauncherClassLoader - extends URLClassLoader -{ - /** - * Basic constructor. - * - * @param urls the Starting URLS - */ - public LauncherClassLoader( final URL[] urls ) - { - super( urls ); - } - - /** - * Add a URL to classloader - * - * @param url the url - */ - public void addURL( final URL url ) - { - super.addURL( url ); - } - - /** - * Add an array of URLs to classloader - * - * @param url the url - */ -/* - void addURLs( final URL[] urls ) - { - for( int i = 0; i < urls.length; i++ ) - { - addURL( urls[ i ] ); - } - } -*/ -} diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java index 72b895dda..62fd43c55 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java @@ -11,6 +11,7 @@ import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; +import java.net.URLClassLoader; import java.util.ArrayList; import java.util.StringTokenizer; @@ -41,12 +42,14 @@ public final class Main final File libDir = new File( installDirectory, "lib" ); final URL[] urls = buildURLList( libDir ); - final LauncherClassLoader classLoader = new LauncherClassLoader( urls ); + final URLClassLoader classLoader = new URLClassLoader( urls ); //load class and retrieve appropriate main method. final Class clazz = classLoader.loadClass( "org.apache.myrmidon.Main" ); final Method method = clazz.getMethod( "main", new Class[] { args.getClass() } ); + Thread.currentThread().setContextClassLoader( classLoader ); + //kick the tires and light the fires.... method.invoke( null, new Object[] { args } ); } @@ -80,6 +83,14 @@ public final class Main if( !file.isFile() || !file.canRead() ) { + //ignore non-files or unreadable files + continue; + } + + final String name = file.getName(); + if( !name.endsWith( ".jar" ) && !name.endsWith( ".zip" ) ) + { + //Ifnore files in lib dir that are not jars or zips continue; }