[ https://jira.codehaus.org/browse/MJAVADOC-297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=273506#comment-273506 ]
Robert Scholte commented on MJAVADOC-297: ----------------------------------------- Extracted this ocde fragment from the tagged class. {code} private void writeParamTag( final StringBuffer sb, final JavaMethod javaMethod, final JavaEntityTags javaEntityTags, String[] params ) { params = fixQdox173( params ); String paramName = params[0]; if ( !fixTag( PARAM_TAG ) ) { // write original param tag if found String originalJavadocTag = javaEntityTags.getJavadocParamTag( paramName ); if ( originalJavadocTag != null ) { sb.append( originalJavadocTag ); } return; } boolean found = false; JavaParameter javaParam = javaMethod.getParameterByName( paramName ); if ( javaParam == null ) { // is generic? TypeVariable[] typeParams = javaMethod.getTypeParameters(); for ( int i = 0; i < typeParams.length; i++ ) { if ( typeParams[i].getGenericValue().equals( paramName ) ) { found = true; } } } else { found = true; } if ( !found ) { if ( getLog().isWarnEnabled() ) { StringBuffer warn = new StringBuffer(); warn.append( "Fixed unknown param '" ).append( paramName ).append( "' defined in " ); warn.append( getJavaMethodAsString( javaMethod ) ); getLog().warn( warn.toString() ); } if ( sb.toString().endsWith( EOL ) ) { sb.delete( sb.toString().lastIndexOf( EOL ), sb.toString().length() ); } } else { String originalJavadocTag = javaEntityTags.getJavadocParamTag( paramName ); if ( originalJavadocTag != null ) { sb.append( originalJavadocTag ); String s = "@" + PARAM_TAG + " " + paramName; if ( StringUtils.removeDuplicateWhitespace( originalJavadocTag ).trim().endsWith( s ) ) { sb.append( " " ); sb.append( getDefaultJavadocForType( javaParam.getType() ) ); } } } } {code} The NPE is caused in one of the final lines: {{sb.append( getDefaultJavadocForType( javaParam.getType() ) );}} {{sb}} can't be {{null}} since it's already used, so it has to be {{javaParam}}. Two options I can think of: @param is empty or it has an invalid name. Shouldn't be too hard to find out. > NullPointerException in AbstractFixJavadocMojo.writeParamTag() > -------------------------------------------------------------- > > Key: MJAVADOC-297 > URL: https://jira.codehaus.org/browse/MJAVADOC-297 > Project: Maven 2.x Javadoc Plugin > Issue Type: Bug > Affects Versions: 2.7 > Environment: graham-leggetts-macbook-pro-3:patricia-db-trunk minfrin$ > mvn --version > Apache Maven 2.2.0 (r788681; 2009-06-26 15:04:01+0200) > Java version: 1.6.0_20 > Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home > Default locale: en_US, platform encoding: MacRoman > OS name: "mac os x" version: "10.5.8" arch: "x86_64" Family: "mac" > Reporter: Graham Leggett > > While attempting to run the javadoc:fix goal against source code, v2.7 of the > javadoc plugin crashed as follows: > {noformat}[INFO] > ------------------------------------------------------------------------ > [ERROR] FATAL ERROR > [INFO] > ------------------------------------------------------------------------ > [INFO] null > [INFO] > ------------------------------------------------------------------------ > [INFO] Trace > java.lang.NullPointerException > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.writeParamTag(AbstractFixJavadocMojo.java:1958) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocTags(AbstractFixJavadocMojo.java:1842) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocTags(AbstractFixJavadocMojo.java:1747) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocComment(AbstractFixJavadocMojo.java:1658) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateEntityComment(AbstractFixJavadocMojo.java:1527) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.fixMethodComment(AbstractFixJavadocMojo.java:1391) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.processFix(AbstractFixJavadocMojo.java:993) > at > org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.execute(AbstractFixJavadocMojo.java:405) > at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) > at > org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > {noformat} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira