Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent (original) (raw)
Uwe Schindler uschindler at apache.org
Thu Feb 28 13:31:24 PST 2013
- Previous message: Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent
- Next message: Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Joe,
I know about this warning and it generally appears on Java 7, but it was not printed out in that case (8b78)! The log I posted was the complete printout from javac.
In any case, we use other tools to ensure that the code works with JDK 1.6 (e.g. animal-sniffer plugin) and our final release versions of Lucene are compiled and release binaries created using JDK6. But some people may still want to compile the code with recent Java versions, including JDK8.
This is clearly a backwards break and a regression, sorry. With Oracle's current practice to stop supporting older JDKs (like Java 6 from now on), how can anybody with a recent JDK compile this open source project (without crazy bootclasspath tricks, just to compile it)? If this does no longer work at all, you can nuke -source and -target from the possible javac cmd-line options.
I will open a new bug report on bugs.sun.com and hope for an "official" response.
Uwe
Uwe Schindler uschindler at apache.org Apache Lucene PMC Member / Committer Bremen, Germany http://lucene.apache.org/
-----Original Message----- From: Joe Darcy [mailto:joe.darcy at oracle.com] Sent: Thursday, February 28, 2013 10:17 PM To: Uwe Schindler Cc: compiler-dev at openjdk.java.net; lambda-dev at openjdk.java.net Subject: Re: Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent
Hello Uwe, One of the warnings you should have received from javac is JDK 8 is something along the lines of "using -source 6 without setting - bootclasspath." https://blogs.oracle.com/darcy/entry/bootclasspatholdersource If follow this long-standing recommendation, https://blogs.oracle.com/darcy/entry/howtocrosscompilefor then your existing code should compile. Thanks for trying out the JDK 8 builds on Lucene, -Joe On 2/28/2013 1:07 PM, Uwe Schindler wrote: > Hi, > > we tried to build Apache Lucene with JDK8 b78 today (Java(TM) SE Runtime Environment (build 1.8.0-ea-b78)), so we can use the new features of e.g. doclint on javac and javadocs (see related mails on javadoc- dev at openjdk.java.net). Unfortunately those bugs are fixed, but suddenly, the source code of Apache Lucene and Apache Solr no longer compiles, although valid in JDK6, JDK7 and earlier JDK8 builds. We get the following error: > > [javac] Compiling 113 source files to C:\Users\Uwe Schindler\Projects\lucene\trunk-lusolr3\lucene\build\test- framework\classes\java > [javac] C:\Users\Uwe Schindler\Projects\lucene\trunk- lusolr3\lucene\test- framework\src\java\org\apache\lucene\util\TestRuleSetupAndRestoreClass Env.java:134: error: cannot find symbol > [javac] if (targetClass.isAnnotationPresent(SuppressCodecs.class)) { > [javac] ^ > [javac] symbol: method isAnnotationPresent(Class) > [javac] location: variable targetClass of type Class<?> > [javac] Note: Some input files use or override a deprecated API. > [javac] Note: Recompile with -Xlint:deprecation for details. > [javac] 1 error > > > This method exists since Java 5, but a recent commit in JDK 8 (http://hg.openjdk.java.net/jdk8/awt/jdk/rev/e04467fa13af) seems to cause this. The implementations were removed from the concrete classes, only the new default implementation on the interface should be used. Unfortunately, the compiler (javac) does not understand this and fails to compile. -target and -source is 1.6. > > >From the javadocs issues I know that currently the response times on new bugs on bugs.sun.com is > 3 weeks, so I contact you directly. > > Please include my eMail address into the responses, as I am not > subscribed to both lists, > > Uwe > > ----- > Uwe Schindler > uschindler at apache.org > Apache Lucene PMC Member / Committer > Bremen, Germany > http://lucene.apache.org/ > > > >
- Previous message: Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent
- Next message: Regression in JDK8 build 78: javac complains about missing Class#isAnnotationPresent
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]