Uploaded image for project: 'Commons BCEL'
  1. Commons BCEL
  2. BCEL-304

ClassPath.getClassFile() and friends do not work with JDK 9 and higher

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 6.2
    • Fix Version/s: 6.3
    • Component/s: Main
    • Labels:
      None

      Description

      When trying to get the class file for Java classes (ie. java.lang.String), an IOException is thrown:

      Exception in thread "main" java.io.IOException: Couldn't find: java.lang.String.class
      at org.apache.bcel.util.ClassPath.getClassFile(ClassPath.java:279)
      at org.apache.bcel.util.ClassPath.getClassFile(ClassPath.java:301)
      at bcel.test.GetClassFileTest.main(GetClassFileTest.java:12)

       

      The root cause appears to be the restructuring of Java starting with Java 9. Specifically, the removal of the rt.jar. The above excpetion can be reproduced using a simple application:

      package bcel.test;

      import java.io.IOException;

      import org.apache.bcel.util.ClassPath;

      public class GetClassFileTest {

         public static void main(String[] args) throws IOException {
            String className = "java.lang.String";
            System.out.println("Looking up ClassPath.ClassFile for: " + className);
            ClassPath.ClassFile classFile = ClassPath.SYSTEM_CLASS_PATH.getClassFile(className);
            if (classFile != null)

      {          System.out.println("Class file base: " + classFile.getBase());          System.out.println("Class file path: " + classFile.getPath());       }

         }

      }

       

      Running this on Java 8 produces the following output, whereas running it on Java 9+ produces the IOException:

      Class file base: C:\jdk1.8.0_161\jre\lib\rt.jar
      Class file path: java/lang/String.class

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                garydgregory Gary Gregory
                Reporter:
                epavlak Ed Pavlak
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: