Index: src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java
===================================================================
--- src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java	(revision 681640)
+++ src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java	(working copy)
@@ -829,6 +829,43 @@
     protected static List getTagletClassNames( File jarFile )
         throws IOException, ClassNotFoundException, NoClassDefFoundError
     {
+        // Needed to find com.sun.tools.doclets.Taglet class
+        File tools = getToolsJar();
+
+        List classes = getClassNamesFromJar( jarFile );
+        ClassLoader cl = new URLClassLoader( new URL[] { jarFile.toURI().toURL(), tools.toURI().toURL() }, null );
+
+        List tagletClasses = new ArrayList();
+
+        Class tagletClass = cl.loadClass( "com.sun.tools.doclets.Taglet" );
+        for ( Iterator it = classes.iterator(); it.hasNext(); )
+        {
+            String s = (String) it.next();
+
+            Class c = cl.loadClass( s );
+
+            if ( tagletClass.isAssignableFrom( c ) && !Modifier.isAbstract( c.getModifiers() ) )
+            {
+                tagletClasses.add( c.getName() );
+            }
+        }
+
+        return tagletClasses;
+    }
+
+    /**
+     * Gets the path to <code>JAVA_HOME/lib/tools.jar</code> for JDKs on Windows, Linux and Solaris or
+     * <code>JAVA_HOME/Classes/classes.jar</code> for JDKs on Mac OS X.
+     *
+     * @return The path to the <code>JAVA_HOME/lib/tools.jar</code> or <code>JAVA_HOME/Classes/classes.jar</code>,
+     * never <code>null</code>.
+     * @throws IOException If the path could not be determined (although the platform has <code>tools.jar</code>).
+     * @see <a href="http://developer.apple.com/documentation/Java/Conceptual/Java14Development/02-JavaDevTools/
+     *JavaDevTools.html#//apple_ref/doc/uid/TP40001884-208117">Java Tools on Mac OS X</a>
+     */
+    protected static File getToolsJar()
+        throws IOException
+    {
         File jdkHome = null;
         if ( SystemUtils.IS_OS_MAC_OSX )
         {
@@ -856,32 +893,27 @@
             }
         }
 
-        // Needed to find com.sun.tools.doclets.Taglet class
-        File tools = new File( jdkHome, "lib/tools.jar" );
-        if ( !tools.exists() || !tools.isFile() )
+        File tools;
+        if ( !SystemUtils.IS_OS_MAC_OSX )
         {
-            throw new IOException( "tools.jar '" + tools + "' was not found or is invalid." );
+            tools = new File( jdkHome, "lib" + File.separator + "tools.jar" );
+            if ( !tools.exists() || !tools.isFile() )
+            {
+                throw new IOException( "tools.jar '" + tools + "' was not found or is invalid. " +
+                        "Should be JAVA_HOME/lib/tools.jar" );
+            }
         }
-
-        List classes = getClassNamesFromJar( jarFile );
-        ClassLoader cl = new URLClassLoader( new URL[] { jarFile.toURI().toURL(), tools.toURI().toURL() }, null );
-
-        List tagletClasses = new ArrayList();
-
-        Class tagletClass = cl.loadClass( "com.sun.tools.doclets.Taglet" );
-        for ( Iterator it = classes.iterator(); it.hasNext(); )
+        else
         {
-            String s = (String) it.next();
-
-            Class c = cl.loadClass( s );
-
-            if ( tagletClass.isAssignableFrom( c ) && !Modifier.isAbstract( c.getModifiers() ) )
+            tools = new File( jdkHome, "Classes" + File.separator + "classes.jar" );
+            if ( !tools.exists() || !tools.isFile() )
             {
-                tagletClasses.add( c.getName() );
+                throw new IOException( "classes.jar '" + tools + "' was not found or is invalid. " +
+                        "Should be JAVA_HOME/Classes/classes.jar" );
             }
         }
 
-        return tagletClasses;
+        return tools;
     }
 
     // ----------------------------------------------------------------------
Index: src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java
===================================================================
--- src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java	(revision 681640)
+++ src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java	(working copy)
@@ -19,8 +19,10 @@
  * under the License.
  */
 
+import java.io.File;
 import java.util.regex.PatternSyntaxException;
 
+import org.apache.commons.lang.SystemUtils;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Settings;
 
@@ -249,4 +251,28 @@
         cmdLine = JavadocUtil.hideProxyPassword( cmdLine, null );
         assertFalse( cmdLine.indexOf( "-J-Dhttp.proxyPassword=\"****\"" ) != -1 );
     }
+
+    /**
+     * Method to test the search for tools.jar.
+     *
+     * @throws Exception if any
+     */
+    public void testGetToolsJar()
+        throws Exception
+    {
+        File tools = JavadocUtil.getToolsJar();
+        assertNotNull( tools );
+        if ( SystemUtils.IS_OS_MAC_OSX )
+        {
+            assertEquals( tools.getName(), "classes.jar" );
+        }
+        else
+        {
+            assertEquals( tools.getName(), "tools.jar" );
+        }
+
+        assertTrue( tools.exists() );
+        assertTrue( tools.isFile() );
+    }
+
 }

