Author: bentmann
Date: Fri Aug  7 12:16:45 2009
New Revision: 801964

URL: http://svn.apache.org/viewvc?rev=801964&view=rev
Log:
[MNG-2690] DefaultPluginManager.getConfiguredMojo() doesn't handle 
NoClassDefFoundError correctly

Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=801964&r1=801963&r2=801964&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Fri Aug  7 12:16:45 2009
@@ -525,8 +525,23 @@
             }
             catch ( ComponentLookupException e )
             {
+                Throwable cause = e.getCause();
+                while ( cause != null && !( cause instanceof LinkageError )
+                    && !( cause instanceof ClassNotFoundException ) )
+                {
+                    cause = cause.getCause();
+                }
+
+                if ( ( cause instanceof NoClassDefFoundError ) || ( cause 
instanceof ClassNotFoundException ) )
+                {
+                    throw new PluginContainerException( mojoDescriptor, 
pluginRealm, "Unable to load the mojo '"
+                        + mojoDescriptor.getGoal() + "' in the plugin '" + 
pluginDescriptor.getId()
+                        + "'. A required class is missing: " + 
cause.getMessage(), e );
+                }
+
                 throw new PluginContainerException( mojoDescriptor, 
pluginRealm, "Unable to find the mojo '"
-                    + mojoDescriptor.getGoal() + "' in the plugin '" + 
pluginDescriptor.getId() + "'", e );
+                    + mojoDescriptor.getGoal() + "' (or one of its required 
components) in the plugin '"
+                    + pluginDescriptor.getId() + "'", e );
             }
     
             if ( mojo instanceof ContextEnabled )


Reply via email to