Author: vsiveton Date: Wed Feb 6 16:56:18 2008 New Revision: 619234 URL: http://svn.apache.org/viewvc?rev=619234&view=rev Log: MNG-3388: DefaultPluginManager needs to catch LinkageError
o added the catch Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=619234&r1=619233&r2=619234&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Wed Feb 6 16:56:18 2008 @@ -60,6 +60,7 @@ import org.apache.maven.project.path.PathTranslator; import org.apache.maven.reporting.MavenReport; import org.apache.maven.settings.Settings; +import org.codehaus.classworlds.ClassRealm; import org.codehaus.classworlds.NoSuchRealmException; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; @@ -463,6 +464,45 @@ } catch ( MojoFailureException e ) { + session.getEventDispatcher().dispatchError( event, goalExecId, e ); + + throw e; + } + catch ( LinkageError e ) + { + if ( getLogger().isFatalErrorEnabled() ) + { + getLogger().fatalError( + plugin.getClass().getName() + "#execute() caused a linkage error " + + "and may be out-of-date. Check the realms:" ); + + ClassRealm pluginRealm = mojoDescriptor.getPluginDescriptor().getClassRealm(); + StringBuffer sb = new StringBuffer(); + sb.append( "Plugin realm = " + pluginRealm.getId() ).append( '\n' ); + for ( int i = 0; i < pluginRealm.getConstituents().length; i++ ) + { + sb.append( "urls[" + i + "] = " + pluginRealm.getConstituents()[i] ); + if ( i != ( pluginRealm.getConstituents().length - 1 ) ) + { + sb.append( '\n' ); + } + } + getLogger().fatalError( sb.toString() ); + + ClassRealm containerRealm = container.getContainerRealm(); + sb = new StringBuffer(); + sb.append( "Container realm = " + containerRealm.getId() ).append( '\n' ); + for ( int i = 0; i < containerRealm.getConstituents().length; i++ ) + { + sb.append( "urls[" + i + "] = " + containerRealm.getConstituents()[i] ); + if ( i != ( containerRealm.getConstituents().length - 1 ) ) + { + sb.append( '\n' ); + } + } + getLogger().fatalError( sb.toString() ); + } + session.getEventDispatcher().dispatchError( event, goalExecId, e ); throw e;