This problem happens no matter what java versions are being talked about. When the aim is to support java N, but the latest is java X then it is difficult to prevent accidents.
Compiler property "source" prevents the use of *language features* that are not supported in the specified version Compiler property "target" ensures that the generated bytecode is readable by the specified version. But nothing checks that you are using only APIs provided by the runtime library distributed by that version. Currently the only way to do that is to compile against the runtime lib distributed with that version (which basically means *using* that version to compile). The CLIRR project does binary-compatibility testing on jars. I have always suspected that it would only need a minor enhancement to generate an "API summary" for the rt.jar of version N of java, and then to be able to automatically check that an app only makes calls to the APIs defined by that summary file. Just need that old 40 hour day in order to get time to do it :-) Cheers, Simon ---- Matthias Wessendorf <[EMAIL PROTECTED]> schrieb: > I'd be fine with Java5 instead of 1.4 > > -M > > On Dec 20, 2007 3:37 PM, Martin Marinschek <[EMAIL PROTECTED]> wrote: > > yes, that is what I'm saying. > > > > Saying that this is a bug is maybe pushing it too hard... the > > attributes just translate into a compiler language level - that does > > not mean that someone automagically knows all API changes from 1.4 to > > 1.6 and automatically applies them. The only chance for you to catch > > all these problems is to actually compile with 1.4. > > > > > > regards, > > > > Martin > > > > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote: > > > So, > > > > > > you say that a configuration like: > > > > > > <plugin> > > > <groupId>org.apache.maven.plugins</groupId> > > > <artifactId>maven-compiler-plugin</artifactId> > > > <inherited>true</inherited> > > > <configuration> > > > <source>1.5</source> > > > <target>1.5</target> > > > </configuration> > > > </plugin> > > > > > > > > > does allow you to use JDK6 methods? > > > That would be a bad bug, IMO. > > > > > > -M > > > > > > On Dec 20, 2007 3:22 PM, Martin Marinschek <[EMAIL PROTECTED]> > > > wrote: > > > > Yes, so 1.5/1.6 syntax will correctly be found and disallowed. But API > > > > changes are not checked for, so a newly added method will not be > > > > found. > > > > > > > > > > > > regards, > > > > > > > > Martin > > > > > > > > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote: > > > > > On Dec 20, 2007 3:19 PM, Matthias Wessendorf <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > I thought the compile was configured for source/target not 1.5 || > > > > > > 1.6 > > > > > > > > > > (the compiler plugin) > > > > > > > > > > > > > > > > > -M > > > > > > > > > > > > > > > > > > On Dec 20, 2007 3:18 PM, Martin Marinschek > > > <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > > No - if you are building with 1.6, it won't. Only the language > > > > > > > level > > > is > > > > > checked. > > > > > > > > > > > > > > regards, > > > > > > > > > > > > > > Martin > > > > > > > > > > > > > > > > > > > > > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote: > > > > > > > > On Dec 20, 2007 2:45 PM, <[EMAIL PROTECTED]> wrote: > > > > > > > > > Author: skitching > > > > > > > > > Date: Thu Dec 20 05:45:06 2007 > > > > > > > > > New Revision: 605927 > > > > > > > > > > > > > > > > > > URL: http://svn.apache.org/viewvc?rev=605927&view=rev > > > > > > > > > Log: > > > > > > > > > Remove accidental use of java 1.6 method String.isEmpty > > > > > > > > > > > > > > > > isn't the build catching this ? > > > > > > > > > > > > > > > > -M > > > > > > > > > > > > > > > > > > > > > > > > > > Modified: > > > > > > > > > > > > > > > > > > > > > > > > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java > > > > > > > > > > > > > > > > > > Modified: > > > > > > > > > > > > > > > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java > > > > > > > > > URL: > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java?rev=605927&r1=605926&r2=605927&view=diff > > > > > > > > > > > > > > > > > > > > > > > > > ============================================================================== > > > > > > > > > --- > > > > > > > > > > > > > > > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java > > > > > > > > (original) > > > > > > > > > +++ > > > > > > > > > > > > > > > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java > > > > > > > > Thu Dec 20 05:45:06 2007 > > > > > > > > > @@ -838,7 +838,7 @@ > > > > > > > > > > > > > > > > > > private static void formatPattern(DateFormatSymbols > > > symbols, > > > > > > > > ParserContext context, String patternSub, boolean > > > > > > > > yearIsWeekYear, > > > > > > > > StringBuffer out) > > > > > > > > > { > > > > > > > > > - if ((patternSub == null) || (patternSub.isEmpty())) > > > > > > > > > + if ((patternSub == null) || (patternSub.length() == > > > > > > > > > 0)) > > > > > > > > > { > > > > > > > > > return; > > > > > > > > > } > > > > > > > > > @@ -1137,7 +1137,7 @@ > > > > > > > > > > > > > > > > > > public Date parse(String dateStr) > > > > > > > > > { > > > > > > > > > - if ((dateStr==null) || dateStr.isEmpty()) > > > > > > > > > + if ((dateStr==null) || (dateStr.length() == 0)) > > > > > > > > > return null; > > > > > > > > > > > > > > > > > > ParserContext context = parseOps(symbols, > > > yearIsWeekYear, > > > > > > > > firstDayOfWeek, ops, dateStr); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > Matthias Wessendorf > > > > > > > > > > > > > > > > further stuff: > > > > > > > > blog: http://matthiaswessendorf.wordpress.com/ > > > > > > > > sessions: http://www.slideshare.net/mwessendorf > > > > > > > > mail: matzew-at-apache-dot-org > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > http://www.irian.at > > > > > > > > > > > > > > Your JSF powerhouse - > > > > > > > JSF Consulting, Development and > > > > > > > Courses in English and German > > > > > > > > > > > > > > Professional Support for Apache MyFaces > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > Matthias Wessendorf > > > > > > > > > > > > further stuff: > > > > > > blog: http://matthiaswessendorf.wordpress.com/ > > > > > > sessions: http://www.slideshare.net/mwessendorf > > > > > > mail: matzew-at-apache-dot-org > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Matthias Wessendorf > > > > > > > > > > further stuff: > > > > > blog: http://matthiaswessendorf.wordpress.com/ > > > > > sessions: http://www.slideshare.net/mwessendorf > > > > > mail: matzew-at-apache-dot-org > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > http://www.irian.at > > > > > > > > Your JSF powerhouse - > > > > JSF Consulting, Development and > > > > Courses in English and German > > > > > > > > Professional Support for Apache MyFaces > > > > > > > > > > > > > > > > -- > > > Matthias Wessendorf > > > > > > further stuff: > > > blog: http://matthiaswessendorf.wordpress.com/ > > > sessions: http://www.slideshare.net/mwessendorf > > > mail: matzew-at-apache-dot-org > > > > > > > > > -- > > > > > > http://www.irian.at > > > > Your JSF powerhouse - > > JSF Consulting, Development and > > Courses in English and German > > > > Professional Support for Apache MyFaces > > > > > > -- > Matthias Wessendorf > > further stuff: > blog: http://matthiaswessendorf.wordpress.com/ > sessions: http://www.slideshare.net/mwessendorf > mail: matzew-at-apache-dot-org