error: cannot access <class> extension method found in pre JDK 8 classfile

Boaz Nahum boaznahum at gmail.com
Sun Oct 21 08:34:22 PDT 2012


Hi.

I know that I already asked and ignored - I guess it is not the forum for
such questions - But where else can I ask ?

Well some of our third party code generate this error:

error: cannot access <clsass-name>
extension method found in pre JDK 8 classfile

For example(there are many others),  the following code:

import javax.media.jai.OperationDescriptorImpl;
import javax.media.jai.ParameterListDescriptor;

public class ExtensionMethodInPreJDK8Problem extends
OperationDescriptorImpl {

    public ExtensionMethodInPreJDK8Problem(String[][] resources, String[]
supportedModes, String[] sourceNames,
                        Class[][] sourceClasses, ParameterListDescriptor
pld) {
        super(resources, supportedModes, sourceNames, sourceClasses, pld);
    }
}

generates:

Information:Compilation completed with 3 errors and 0 warnings in 1 sec
Information:3 errors
Information:0 warnings

C:\data\LearnJDK8\JavaCProblem\src\ExtensionMethodInPreJDK8Problem.java
    Error:Error:line (1)error: cannot find symbol class
ParameterListDescriptor
    Error:Error:line (8)error: cannot access OperationDescriptor
*extension method found in pre JDK 8 classfile*
    Error:Error:line (11)error: cannot find symbol class
ParameterListDescriptor

of-course the only reference I found is:

MethodSymbol readMethod() {

     long flags = adjustMethodFlags(nextChar());

     Name name = readName(nextChar());

     Type type = readType(nextChar());

     if (currentOwner.isInterface() &&

        (flags & ABSTRACT) == 0) {

        if (majorVersion > Target.JDK1_8.majorVersion ||

             (majorVersion == Target.JDK1_8.majorVersion &&
minorVersion >= Target.JDK1_8.minorVersion)) {

                    currentOwner.flags_field |= DEFENDER;

                    flags |= DEFENDER;

           } else {

                       //protect against ill-formed classfiles

                      throw new CompletionFailure(currentOwner,
"*extension method found in pre JDK 8 classfile*");

                  }

           }
....................


More information about the lambda-dev mailing list