[PATCH]: javac[8,9] with jdk7

Jan Lahoda jan.lahoda at oracle.com
Fri Apr 4 15:40:49 UTC 2014


Liam,

I tried the patch, using this sample code:
---
interface ID {
     public default void test() {}
}
---

Running (using JDK 7):
$ java -jar javac.jar -Xprint ID.java
leads to the attached exception1.txt.

Using the attached ScanningProcessor.java, running:
$ java -jar javac.jar -processorpath <path> -processor ScanningProcessor 
ID.java

leads to the attached exception2.txt. I suspect there may be other 
similar problems around TypeKind.INTERSECTION - I wonder if there is an 
automated way to look for problems like this?

Jan

On 04/03/2014 07:40 PM, Liam Miller-Cushon wrote:
> On Wed, Mar 26, 2014 at 1:34 AM, Joel Borggrén-Franck
> <joel.franck at oracle.com <mailto:joel.franck at oracle.com>> wrote:
>
>     having javac run with JRE n-1 in a degraded state would be a nice
>     contribution if the patches aren't too intrusive.
>
>
> It sounded like that was the general consensus, so I put together a
> patch to allow javac 9 to run on jre 7 in a degraded state. That means:
>
> - warnings aren't generated for annotation processors that support
> RELEASE_7 when the source level is 8 or 9 (because the RELEASE_8 and
> RELEASE_9 constants aren't available)
>
> - the native headers feature is disabled (because
> StandardLocations.NATIVE_HEADER_OUTPUT isn't available)
-------------- next part --------------
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.EnumConstantNotPresentException: javax.lang.model.SourceVersion.RELEASE_9
        at sun.reflect.annotation.EnumConstantNotPresentExceptionProxy.generateException(EnumConstantNotPresentExceptionProxy.java:47)
        at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:75)
        at com.sun.proxy.$Proxy4.value(Unknown Source)
        at javax.annotation.processing.AbstractProcessor.getSupportedSourceVersion(AbstractProcessor.java:130)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.checkSourceVersionCompatibility(JavacProcessingEnvironment.java:531)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:502)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:597)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:689)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1034)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1175)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1176)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
        at com.sun.tools.javac.main.Main.compile(Main.java:526)
        at com.sun.tools.javac.main.Main.compile(Main.java:381)
        at com.sun.tools.javac.main.Main.compile(Main.java:370)
        at com.sun.tools.javac.main.Main.compile(Main.java:361)
        at com.sun.tools.javac.Main.compile(Main.java:56)
        at com.sun.tools.javac.Main.main(Main.java:42)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ScanningProcessor.java
Type: text/x-java
Size: 846 bytes
Desc: not available
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20140404/c11cb13b/ScanningProcessor.java>
-------------- next part --------------
modifiers: [abstract]
warning: No SupportedSourceVersion annotation found on ScanningProcessor, returning RELEASE_6.
warning: Supported source version 'RELEASE_6' from annotation processor 'ScanningProcessor' less than -source '1.9'


An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NoSuchFieldError: DEFAULT
        at com.sun.tools.javac.code.Flags.asModifierSet(Flags.java:318)
        at com.sun.tools.javac.code.Symbol$MethodSymbol.getModifiers(Symbol.java:1339)
        at ScanningProcessor$1.scan(ScanningProcessor.java:17)
        at ScanningProcessor$1.scan(ScanningProcessor.java:14)
        at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:131)
        at javax.lang.model.util.ElementScanner6.visitType(ElementScanner6.java:171)
        at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:1151)
        at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:141)
        at ScanningProcessor$1.scan(ScanningProcessor.java:18)
        at ScanningProcessor$1.scan(ScanningProcessor.java:14)
        at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:131)
        at ScanningProcessor.process(ScanningProcessor.java:14)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:704)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1034)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1175)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1176)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
        at com.sun.tools.javac.main.Main.compile(Main.java:526)
        at com.sun.tools.javac.main.Main.compile(Main.java:381)
        at com.sun.tools.javac.main.Main.compile(Main.java:370)
        at com.sun.tools.javac.main.Main.compile(Main.java:361)
        at com.sun.tools.javac.Main.compile(Main.java:56)
        at com.sun.tools.javac.Main.main(Main.java:42)



More information about the compiler-dev mailing list