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