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

ResourceParsingClassHierarchyResolver.getClassInfo(ClassDesc) throws unspecified UncheckedIOException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • 26
    • 25
    • core-libs

      A user of ClassFile API reports the following exception in one of their applications (trimmed stacktrace):

      java.io.UncheckedIOException: java.util.zip.ZipException: ZipFile invalid LOC header (bad signature)
      at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl$ResourceParsingClassHierarchyResolver.getClassInfo(ClassHierarchyImpl.java:194)
          at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl$CachedClassHierarchyResolver$1.apply(ClassHierarchyImpl.java:134)
          at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl$CachedClassHierarchyResolver$1.apply(ClassHierarchyImpl.java:131)
          at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1229)
          at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl$CachedClassHierarchyResolver.getClassInfo(ClassHierarchyImpl.java:142)
          at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.resolve(ClassHierarchyImpl.java:74)
          at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.isInterface(ClassHierarchyImpl.java:86)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeReferenceFrom(StackMapGenerator.java:1363)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeFrom(StackMapGenerator.java:1331)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.merge(StackMapGenerator.java:1192)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.checkAssignableTo(StackMapGenerator.java:1140)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.checkJumpTarget(StackMapGenerator.java:283)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.processExceptionHandlerTargets(StackMapGenerator.java:692)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.processBlock(StackMapGenerator.java:681)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.processMethod(StackMapGenerator.java:454)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.generate(StackMapGenerator.java:303)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.<init>(StackMapGenerator.java:246)
          at java.base/jdk.internal.classfile.impl.StackMapGenerator.of(StackMapGenerator.java:157)
          at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.generateStackMaps(DirectCodeBuilder.java:332)
          at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.tryGenerateStackMaps(DirectCodeBuilder.java:340)
          at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:375)
          at java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:1099)
          at java.base/jdk.internal.classfile.impl.Util.writeAttribute(Util.java:230)
          at java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:71)
          at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:146)
          at java.base/jdk.internal.classfile.impl.Util.writeList(Util.java:247)
          at java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:198)
          at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:146)
          at java.base/jdk.internal.classfile.impl.ClassFileImpl.transformClass(ClassFileImpl.java:153)
          at java.base/java.lang.classfile.ClassFile.transformClass(ClassFile.java:693)
          at foo.bar.HelloWorld.doTransform(ClassMigrator.java:219)

      java.lang.classfile.ClassHierarchyResolver.getClassInfo(ClassDesc classDesc) is specified to throw only IllegalArgumentException:

          * @throws IllegalArgumentException if a class shouldn't be queried for
          * hierarchy, such as when it is inaccessible

      So it appears that the ResourceParsingClassHierarchyResolver (which is a ClassHierarchyResolver) throws an unspecified UncheckedIOException from this method's implementation.

            liach Chen Liang
            jpai Jaikiran Pai
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: