As I felt unfomfortable leaving it as it is I checked
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
where there was the following hint on the target tag:
Note: Merely setting the target option does not guarantee that your code 
actually runs on a JRE with the specified version. The pitfall is unintended 
usage of APIs that only exist in later JREs which would make your code fail at 
runtime with a linkage error. To avoid this issue, you can either configure the 
compiler's boot classpath to match the target JRE or use the Animal Sniffer 
Maven Plugin to verify your code doesn't use unintended APIs.

With regards
Sebastian


-----Ursprüngliche Nachricht-----
Von: Lin Ma [mailto:lin...@gmail.com] 
Gesendet: Montag, 30. März 2015 09:56
An: Maven Users List
Betreff: Re: about source and target in maven-compiler-plugin

Thanks all the same Sebastian. Your reply is very helpful and bring us further 
thoughts.

regards,
Lin

On Mon, Mar 30, 2015 at 12:47 AM, Sebastian Oerding < 
sebastian.oerd...@robotron.de> wrote:

> Hi Lin,
>
> I just tried my example and Maxim is right. I thought that the source 
> should take the API compatibility into account it seems that it is not 
> this way. Hence if the classes are successfully compiled (which 
> requires a JDK >
> 1.5) and you are executing them with Java 1.5 the StringBuilder class 
> will not be in place -> ClassNotFoundException (the class format 
> should be as needed for Java 1.5 due to the target).
>
> However I will not tell anymore about it as I'm not completely sure 
> about the moment and I do not have the time to really dig into this. Sorry.
> Detailed information about this is available in the net. In an earlier 
> email someone already provided links for the Maven documentation.
>
> Furthermore details about setting the compiler level can be found for 
> example in the Sun Certified Java Programmer Study Guide.
>
> With regards
> Sebastian
>
> -----Ursprüngliche Nachricht-----
> Von: Lin Ma [mailto:lin...@gmail.com]
> Gesendet: Montag, 30. März 2015 09:38
> An: Maven Users List
> Betreff: Re: about source and target in maven-compiler-plugin
>
> Hi Maxim,
>
> Why compiler will not fail? Supposing StringBuilder is a class in JDK 
> 1.6, but we force compiler to use 1.5 which has no such class? Please 
> feel free to correct me if I am wrong.
>
> regards,
> Lin
>
> On Mon, Mar 30, 2015 at 12:33 AM, Maxim Solodovnik 
> <solomax...@gmail.com>
> wrote:
>
> > If I'm not mistaken compiler will not fail in this case BUT the 
> > application will fail in runtime (in case Java 1.5 is used) due to 
> > StringBuilder class is missing in JDK
> >
> > On Mon, Mar 30, 2015 at 1:20 PM, Lin Ma <lin...@gmail.com> wrote:
> >
> > > Thanks Sebastian,
> > >
> > > 1. I am using JDK 1.7/1.8 for both development and deployment in 
> > > runtime, shall I change 1.5 of source and target to 1.7/1.8?
> > >
> > > 2. In your example, "for example you can write source code using a 
> > > JDK
> > 1.6
> > > which is compliant to Java 1.5. However you can also use the
> > StringBuilder
> > > class which does not exist in Java 1.5", I think using JDK 1.6 
> > > specific feature but using 1.5 complier will fail? No? Please feel 
> > > free to correct me.
> > >
> > > regards,
> > > Lin
> > >
> > > On Mon, Mar 30, 2015 at 12:14 AM, Sebastian Oerding < 
> > > sebastian.oerd...@robotron.de> wrote:
> > >
> > > > source -> The level (JDK version) to which the source code must 
> > > > be compliant to, for example you can write source code using a 
> > > > JDK
> > > > 1.6
> > which
> > > > is compliant to Java 1.5. However you can also use the 
> > > > StringBuilder
> > > class
> > > > which does not exist in Java 1.5 target -> The class version of 
> > > > the generated class files. The class
> > > format
> > > > changes with some Java version, for example as some stuff may be 
> > > > added
> > > for
> > > > performance reason. For example if a new byte code instruction 
> > > > comes up (like 'invokedynamic') this really makes a change. Or 
> > > > another example
> > > (I'm
> > > > not really sure about it): As far as I think a stack map has 
> > > > been added from Java 5 to Java 1.6. This should improve 
> > > > performance and makes
> > subtle
> > > > differences when ClassNotFoundException are thrown. You can use 
> > > > a JDK
> > to
> > > > compile code for different but lower versions. This way can 
> > > > benefit
> > from
> > > > some optimizations which weren't available with the old JDK and 
> > > > are compatible.
> > > >
> > > > With regards
> > > > Sebastian
> > > >
> > > > -----Ursprüngliche Nachricht-----
> > > > Von: Lin Ma [mailto:lin...@gmail.com]
> > > > Gesendet: Montag, 30. März 2015 07:46
> > > > An: Maven Users List
> > > > Betreff: about source and target in maven-compiler-plugin
> > > >
> > > > Hello Maven masters,
> > > >
> > > > For maven-compiler-plugin(a sample below), have a quick question.
> > > > I
> > read
> > > > this document
> > > > (http://maven.apache.org/plugins/maven-compiler-plugin/
> > ),
> > > > and confused what means source and target 1.5 here, it seems it 
> > > > is an internal version number of Maven, independent of JDK?
> > > >
> > > > <plugin>
> > > >     <artifactId>maven-compiler-plugin</artifactId>
> > > >     <version>2.3.2</version>
> > > >     <configuration>
> > > >         <source>1.5</source>
> > > >         <target>1.5</target>
> > > >     </configuration>
> > > > </plugin>
> > > >
> > > > thanks in advance,
> > > > Lin
> > > >
> > > > ----------------------------------------------------------------
> > > > --
> > > > --- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> > > > For additional commands, e-mail: users-h...@maven.apache.org
> > > >
> > >
> >
> >
> >
> > --
> > WBR
> > Maxim aka solomax
> >
>

Reply via email to