summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/DynamicClassLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm/clojure/lang/DynamicClassLoader.java')
-rw-r--r--src/jvm/clojure/lang/DynamicClassLoader.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/DynamicClassLoader.java b/src/jvm/clojure/lang/DynamicClassLoader.java
index fa8f39e9..db5a6944 100644
--- a/src/jvm/clojure/lang/DynamicClassLoader.java
+++ b/src/jvm/clojure/lang/DynamicClassLoader.java
@@ -13,20 +13,23 @@
package clojure.lang;
import java.util.HashMap;
+import java.net.URLClassLoader;
+import java.net.URL;
//todo: possibly extend URLClassLoader?
-public class DynamicClassLoader extends ClassLoader{
+public class DynamicClassLoader extends URLClassLoader{
HashMap<Integer, Object[]> constantVals = new HashMap<Integer, Object[]>();
HashMap<String, byte[]> map = new HashMap<String, byte[]>();
+static final URL[] EMPTY_URLS = new URL[]{};
public DynamicClassLoader(){
- super(Thread.currentThread().getContextClassLoader());
+ super(EMPTY_URLS,Thread.currentThread().getContextClassLoader());
//super(Compiler.class.getClassLoader());
}
public DynamicClassLoader(ClassLoader parent){
- super(parent);
+ super(EMPTY_URLS,parent);
}
public Class defineClass(String name, byte[] bytes){
@@ -43,7 +46,8 @@ protected Class<?> findClass(String name) throws ClassNotFoundException{
byte[] bytes = map.get(name);
if(bytes != null)
return defineClass(name, bytes, 0, bytes.length);
- throw new ClassNotFoundException(name);
+ return super.findClass(name);
+ //throw new ClassNotFoundException(name);
}
public void registerConstants(int id, Object[] val){
@@ -54,4 +58,8 @@ public Object[] getConstants(int id){
return constantVals.get(id);
}
+public void addURL(URL url){
+ super.addURL(url);
+}
+
}