error: cannot access <class> extension method found in pre JDK 8 classfile
Remi Forax
forax at univ-mlv.fr
Sun Oct 21 12:11:04 PDT 2012
On 10/21/2012 06:56 PM, maurizio cimadamore wrote:
> I think this has been fixed in [1]
>
> http://hg.openjdk.java.net/lambda/lambda/langtools/rev/a78999ebabfc
>
> This fix is not included in the latest promoted binary build - so that
> might explain why you are getting this.
> Hope this helps.
>
> Maurizio
doh, the answer of Maurizio just hit my inbox.
Rémi
>
> On 21-Oct-12 4:34 PM, Boaz Nahum wrote:
>> 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