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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 6.2
    • 6.3
    • Main
    • 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

              ggregory Gary D. Gregory
              epavlak Ed Pavlak
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: