Index: src/org/armedbear/lisp/Complex.java
===================================================================
--- src/org/armedbear/lisp/Complex.java	(revision 11724)
+++ src/org/armedbear/lisp/Complex.java	(working copy)
@@ -304,6 +304,7 @@
 
   private static Method hypotMethod = null;
   static { try {
+	  if (!IkvmSite.isIKVM())
       hypotMethod = 
           Class.forName("java.lang.Math")
           .getMethod("hypot", new Class[] { Double.TYPE, Double.TYPE });
Index: src/org/armedbear/lisp/Nil.java
===================================================================
--- src/org/armedbear/lisp/Nil.java	(revision 11724)
+++ src/org/armedbear/lisp/Nil.java	(working copy)
@@ -35,6 +35,7 @@
 
 public final class Nil extends Symbol
 {
+  static final Nil NIL =  new Nil(PACKAGE_CL);
     public Nil(Package pkg)
     {
         super("NIL", pkg);
Index: src/org/armedbear/lisp/Lisp.java
===================================================================
--- src/org/armedbear/lisp/Lisp.java	(revision 11724)
+++ src/org/armedbear/lisp/Lisp.java	(working copy)
@@ -80,7 +80,7 @@
   // ### nil
   // Constructing NIL forces the Symbol class to be loaded (since Nil extends
   // Symbol).
-  public static final LispObject NIL = new Nil(PACKAGE_CL);
+  public static final LispObject NIL = Nil.NIL;
 
   // We need NIL before we can call usePackage().
   static
@@ -1023,7 +1023,7 @@
                               zipFileName = zipFileName.substring(1);
 			  }
 			zipFileName = URLDecoder.decode(zipFileName, "UTF-8");
-                        ZipFile zipFile = new ZipFile(zipFileName);
+                        ZipFile zipFile = new ZipFile(IkvmSite.ikvmFile(zipFileName));
                         try
                           {
                             ZipEntry entry = zipFile.getEntry(entryName);
@@ -1059,7 +1059,11 @@
         return error(new LispError("Unable to load " + namestring));
       }
     Pathname pathname = new Pathname(namestring);
-    final File file = Utilities.getFile(pathname, defaultPathname);
+    File file = Utilities.getFile(pathname, defaultPathname);
+    if (file != null && !file.isFile()) {
+    	 // maybe IKVM?
+    	 file = IkvmSite.ikvmFileSafe(file);
+    }
     if (file != null && file.isFile())
       {
         // The .cls file exists.
@@ -1087,7 +1091,7 @@
       {
         LispObject loadTruename = Symbol.LOAD_TRUENAME.symbolValue(thread);
         String zipFileName = ((Pathname)loadTruename).getNamestring();
-        ZipFile zipFile = new ZipFile(zipFileName);
+        ZipFile zipFile = new ZipFile(IkvmSite.ikvmFile(zipFileName));
         try
           {
             ZipEntry entry = zipFile.getEntry(namestring);
Index: src/org/armedbear/lisp/Load.java
===================================================================
--- src/org/armedbear/lisp/Load.java	(revision 11724)
+++ src/org/armedbear/lisp/Load.java	(working copy)
@@ -64,8 +64,8 @@
 	    String extension = getExtension(filename);
 	    if (extension == null) {
 		// No extension specified. Try appending ".lisp" or ".abcl".
-		File lispFile = new File(dir, filename.concat(".lisp"));
-		File abclFile = new File(dir, filename.concat(".abcl"));
+		File lispFile = IkvmSite.ikvmFileSafe(new File(dir, filename.concat(".lisp")));
+		File abclFile = IkvmSite.ikvmFileSafe(new File(dir, filename.concat(".abcl")));
 		if (lispFile.isFile() && abclFile.isFile()) {
 		    if (abclFile.lastModified() > lispFile.lastModified()) {
 			return abclFile;
@@ -246,7 +246,7 @@
             final String dir = Site.getLispHome();
             try {
                 if (dir != null) {
-                    File file = new File(dir, s);
+                    File file = IkvmSite.ikvmFileSafe(new File(dir, s));
                     if (file.isFile()) {
                         // File exists. For system files, we know the extension
                         // will be .abcl if it is a compiled file.
@@ -336,7 +336,7 @@
         }
         return error(new LispError("File not found: " + filename));
     }
-
+        
     // ### *fasl-version*
     // internal symbol
     private static final Symbol _FASL_VERSION_ =
Index: src/org/armedbear/lisp/Pathname.java
===================================================================
--- src/org/armedbear/lisp/Pathname.java	(revision 11724)
+++ src/org/armedbear/lisp/Pathname.java	(working copy)
@@ -88,6 +88,14 @@
                 init(s.substring(5));
                 return;
             }
+        } else if ("ikvmres".equals(protocol)) {
+            String s = url.getPath();
+            if (s != null && s.startsWith("file:")) {
+                init(s.substring(5));
+                return;
+            } //Else
+           init(s);
+           return;
         }
         error(new LispError("Unsupported URL: \"" + url.toString() + '"'));
     }
@@ -1330,7 +1338,7 @@
             if (originalNamestring != null && newNamestring != null) {
                 final File source = new File(originalNamestring);
                 final File destination = new File(newNamestring);
-                if (Utilities.isPlatformWindows) {
+                if (Utilities.isPlatformWindows || IkvmSite.isIKVM()) {
                     if (destination.isFile())
                         destination.delete();
                 }
