You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Marshall Schor <ms...@schor.com> on 2011/08/01 22:14:05 UTC

maven bundle plugin requires Java 6

In our project we specify Java 5 (for backwards compatibility) and run Maven
using Java 5, so we can catch errors where code inadvertently depends on methods
not in Java 5 but rather, introduced in Java 6.  Merely setting the Maven
compile source and target to 1.5 doesn't catch these kinds of errors. 

For example, in Java 6 a method was added to the String class for getBytes(...)
which takes an argument of Charset.
This method is not in Java 5.

The Felix bundle (release 2.3.5) appears to use this very method, and, thus,
requires Java 6 to run it, because after switching to 2.3.5, I see an exception
with this traceback:

Caused by: java.lang.NoSuchMethodError: java.lang.String.getBytes(Ljava/nio/charset/Charset;)[B
	at aQute.lib.osgi.Jar.<clinit>(Jar.java:290)
	at org.apache.felix.bundleplugin.BundlePlugin.getClasspath(BundlePlugin.java:942)
	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:261)
	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:252)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)


Is this intentional (that Java 6 is a requirement to run the maven-bundle-plugin)? 

-Marshall Schor

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: maven bundle plugin requires Java 6

Posted by Stuart McCulloch <mc...@gmail.com>.
On 1 Aug 2011, at 21:18, Stuart McCulloch wrote:

> On 1 Aug 2011, at 21:14, Marshall Schor wrote:
> 
>> In our project we specify Java 5 (for backwards compatibility) and run Maven
>> using Java 5, so we can catch errors where code inadvertently depends on methods
>> not in Java 5 but rather, introduced in Java 6.  Merely setting the Maven
>> compile source and target to 1.5 doesn't catch these kinds of errors. 

PS. you can use the animal sniffer plugin to catch them:

  http://mojo.codehaus.org/animal-sniffer-maven-plugin/usage.html

which is useful when developing on platforms where a Java 5 JDK is hard to find

( unfortunately this wasn't enabled for the bnd / bundleplugin projects )

>> For example, in Java 6 a method was added to the String class for getBytes(...)
>> which takes an argument of Charset.
>> This method is not in Java 5.
>> 
>> The Felix bundle (release 2.3.5) appears to use this very method, and, thus,
>> requires Java 6 to run it, because after switching to 2.3.5, I see an exception
>> with this traceback:
>> 
>> Caused by: java.lang.NoSuchMethodError: java.lang.String.getBytes(Ljava/nio/charset/Charset;)[B
>> 	at aQute.lib.osgi.Jar.<clinit>(Jar.java:290)
>> 	at org.apache.felix.bundleplugin.BundlePlugin.getClasspath(BundlePlugin.java:942)
>> 	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:261)
>> 	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:252)
>> 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
>> 
>> 
>> Is this intentional (that Java 6 is a requirement to run the maven-bundle-plugin)? 
> 
> not intentional - https://issues.apache.org/jira/browse/FELIX-3037 - happened when we picked up the new version of bnd
> 
> if you don't need any of the changes in 2.3.5 you can lock down the plugin version to 2.3.4, which does work with Java 5
> 
>> -Marshall Schor
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: maven bundle plugin requires Java 6

Posted by Stuart McCulloch <mc...@gmail.com>.
On 1 Aug 2011, at 21:14, Marshall Schor wrote:

> In our project we specify Java 5 (for backwards compatibility) and run Maven
> using Java 5, so we can catch errors where code inadvertently depends on methods
> not in Java 5 but rather, introduced in Java 6.  Merely setting the Maven
> compile source and target to 1.5 doesn't catch these kinds of errors. 
> 
> For example, in Java 6 a method was added to the String class for getBytes(...)
> which takes an argument of Charset.
> This method is not in Java 5.
> 
> The Felix bundle (release 2.3.5) appears to use this very method, and, thus,
> requires Java 6 to run it, because after switching to 2.3.5, I see an exception
> with this traceback:
> 
> Caused by: java.lang.NoSuchMethodError: java.lang.String.getBytes(Ljava/nio/charset/Charset;)[B
> 	at aQute.lib.osgi.Jar.<clinit>(Jar.java:290)
> 	at org.apache.felix.bundleplugin.BundlePlugin.getClasspath(BundlePlugin.java:942)
> 	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:261)
> 	at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:252)
> 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
> 
> 
> Is this intentional (that Java 6 is a requirement to run the maven-bundle-plugin)? 

not intentional - https://issues.apache.org/jira/browse/FELIX-3037 - happened when we picked up the new version of bnd

if you don't need any of the changes in 2.3.5 you can lock down the plugin version to 2.3.4, which does work with Java 5

> -Marshall Schor
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org