getBootPackages reference implementation does not work with endorsed jars

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

Recently I have been working on compiling the JOnAS test suite
with cacao and I found a problem in the implementation of
getBootPackages: When getResources returnes an endores jar before
glibj.zip and this jar has a META-INF/INDEX.LIST, getBootPackages
tries to pull the boot packages only from this (first) jar.

I changed the VMClassLoader.java of cacao to read all the resources.
The patch is appended below. Caution: As my Java skills are practically
non-existant this may be a bad solution. It worked for me. I used
a quick-and-dirty script to add INDEX.LIST to glibj.zip (available on

    http://c1.complang.tuwien.ac.at/cacaowiki/BootPackages

) and with the patch to cacao the JOnAS genic tool finally worked.

You may want to make a similar change to the reference implementation
of getBootPackages.

-Edwin


Index: src/lib/vm/reference/java/lang/VMClassLoader.java
===================================================================
--- src/lib/vm/reference/java/lang/VMClassLoader.java	(revision 4867)
+++ src/lib/vm/reference/java/lang/VMClassLoader.java	(working copy)
@@ -265,12 +265,15 @@
    */
   private static String[] getBootPackages()
   {
-    URL indexList = getResource("META-INF/INDEX.LIST");
-    if (indexList != null)
-      {
+	Enumeration urls = getResources("META-INF/INDEX.LIST");
+	Set packageSet = new HashSet();
+
+    while (urls.hasMoreElements())
+	  {
+        URL indexList = (URL) urls.nextElement();
+
         try
           {
-            Set packageSet = new HashSet();
             String line;
             int lineToSkip = 3;
             BufferedReader reader = new BufferedReader(
@@ -289,15 +292,12 @@
                   lineToSkip--;
               }
             reader.close();
-            return (String[]) packageSet.toArray(new String[packageSet.size()]);
           }
         catch (IOException e)
           {
-            return new String[0];
           }
-      }
-    else
-      return new String[0];
+	  }
+	return (String[]) packageSet.toArray(new String[packageSet.size()]);
   }
 
 


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux