Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4619217

(cl) Error message in ClassLoader.loadLibrary refers to wrong method name

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 1.4.1
    • 1.4.0
    • core-libs



      Name: nt126004 Date: 01/03/2002


      FULL PRODUCT VERSION :
      java version "1.4.0-beta3"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta3-b84)
      Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed mode)

      Also observed in 1.3.1_01.

      glibc-2.1.3-21
      Linux jesse_laptop.netbeans.com 2.2.12-20 #1 Mon Sep 27
      10:40:35 EDT 1999 i686 unknown
      Red Hat Linux release 6.1 (Cartman)

      A DESCRIPTION OF THE PROBLEM :
      The error message from System.loadLibrary (via
      ClassLoader.loadLibrary) is misleading: it is
      ClassLoader.findLibrary that may fail to return an absolute
      path, rather than ClassLoader.findClass. The following lines
      in ClassLoader.loadLibrary should be changed:

      if (!libfile.isAbsolute()) {
      throw new UnsatisfiedLinkError(
          "ClassLoader.findClass failed to return an absolute path: " + libfilename);
      }

      to:

      if (!libfile.isAbsolute()) {
      throw new UnsatisfiedLinkError(
          "ClassLoader.findLibrary failed to return an absolute path: " + libfilename);
      }


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile and run the attached class.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      Expected results:

      ---%<---
      Exception in thread "main" java.lang.UnsatisfiedLinkError:
      ClassLoader.findLibrary failed to return an absolute path:
      i/am/not/absolute.so
      at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1388)
      at java.lang.Runtime.loadLibrary0(Runtime.java:775)
      at java.lang.System.loadLibrary(System.java:835)
      at ClassLoaderErrorMessageTest$Inner.run(ClassLoaderErrorMessageTest.java:25)
      at ClassLoaderErrorMessageTest.main(ClassLoaderErrorMessageTest.java:21)
      ---%<---

      Actual results:

      ---%<---
      Exception in thread "main" java.lang.UnsatisfiedLinkError:
      ClassLoader.findClass failed to return an absolute path:
      i/am/not/absolute.so
      at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1388)
      at java.lang.Runtime.loadLibrary0(Runtime.java:775)
      at java.lang.System.loadLibrary(System.java:835)
      at ClassLoaderErrorMessageTest$Inner.run(ClassLoaderErrorMessageTest.java:25)
      at ClassLoaderErrorMessageTest.main(ClassLoaderErrorMessageTest.java:21)
      ---%<---


      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      The error given in the results section is expected, only the
      message is wrong.

      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.net.URL;
      import java.net.URLClassLoader;
      public class ClassLoaderErrorMessageTest extends
      URLClassLoader {
          public ClassLoaderErrorMessageTest() {
              super(new URL[]
      {ClassLoaderErrorMessageTest.class.getProtectionDomain().getCodeSource().getLocation()});
          }
          protected Class loadClass(String name, boolean resolve)
      throws ClassNotFoundException {
              if
      (name.equals("ClassLoaderErrorMessageTest$Inner")) {
                  Class c = findClass(name);
                  if (resolve) resolveClass(c);
                  return c;
              } else {
                  return super.loadClass(name, resolve);
              }
          }
          protected String findLibrary(String libname) {
              return "i/am/not/absolute.so";
          }
          public static void main (String[] x) throws Exception {
              ClassLoader l = new ClassLoaderErrorMessageTest();
             
      ((Runnable)Class.forName("ClassLoaderErrorMessageTest$Inner",
      true, l).newInstance()).run();
          }
          public static class Inner implements Runnable {
              public void run() {
                  System.loadLibrary("irrelevant");
              }
          }
      }

      ---------- END SOURCE ----------
      (Review ID: 137646)
      ======================================================================

            iris Iris Clark
            nthompsosunw Nathanael Thompson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: