10

When I try to generate Javadocs for my projects using the Android Studio tool I get a series of errors that say a bunch of packages I am using do not exist.

C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:8: error: package android.content does not exist
import android.content.Intent;
                      ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:9: error: package android.graphics does not exist
import android.graphics.Bitmap;
                       ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:10: error: package android.graphics does not exist
import android.graphics.Point;
                       ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:11: error: package android.os does not exist
import android.os.Bundle;
                 ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:12: error: package android.util does not exist
import android.util.Log;
                   ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:13: error: package android.view does not exist
import android.view.Display;
                   ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:14: error: package android.view does not exist
import android.view.View;
                   ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:15: error: package android.view does not exist
import android.view.WindowManager;
                   ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:16: error: package android.widget does not exist
import android.widget.ImageView;
                     ^
C:\Users\Jadon\AndroidStudioProjects\QRHunterApp\app\src\main\java\com\example\qrhunter\loginQRCodeGeneratorActivity.java:26: error: cannot access ViewGroup
public class loginQRCodeGeneratorActivity extends AppCompatActivity {
       ^
  class file for android.view.ViewGroup not found
javadoc: error - fatal error encountered: java.lang.NullPointerException
javadoc: error - Please file a bug against the javadoc tool via the Java bug reporting page
(http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com)
for duplicates. Include error messages and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$MembersPhase.runPhase(TypeEnter.java:934)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.doCompleteEnvs(TypeEnter.java:282)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$MembersPhase.doCompleteEnvs(TypeEnter.java:877)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:251)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:266)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:266)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:266)
    at jdk.compiler/com.sun.tools.javac.comp.TypeEnter.complete(TypeEnter.java:198)
    at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:642)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1326)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:583)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:560)
    at jdk.javadoc/jdk.javadoc.internal.tool.JavadocEnter.main(JavadocEnter.java:79)
    at jdk.javadoc/jdk.javadoc.internal.tool.JavadocTool.getEnvironment(JavadocTool.java:206)
    at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:576)
    at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:432)
    at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:345)
    at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
    at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
12 errors

"javadoc" finished with exit code 4

I have read every answer on this website I can find for a solution to this, and all I have found is to use the -bootclasspath argument in the extra arguments for the generate javadocs tool.

I tried to use that but it is deprecated, so I switched to the -sourcepath argument with the path to my android.jar, it doesn't seem to change anything -sourcepath C:\Users\Jadon\AppData\Local\Android\Sdk\platforms\android-32\android.jar

If anyone knows some way to fix this I would be forever in your debt. This is killing me as I need to have the javadocs generated for my grade.

5 Answers 5

4

We had the same problem and finally found a solution. Put this in your build.gradle (Module) and execute it by pressing Strg+Strg and type gradle generateReleaseJavadoc

android.applicationVariants.all { variant ->
    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
        description "Generates Javadoc for $variant.name."

        source = variant.javaCompile.source
        destinationDir = file("$rootDir/javadoc/")
        failOnError false

        doFirst {
            ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
            classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)

            options.addStringOption "-show-members", "package"
        }
    }}
Sign up to request clarification or add additional context in comments.

Comments

1

I have 2 solutions for this problem:

  1. Implementing android.jar in the module that needs it: Go to Project View > External Libraries > unfold Android API X Plataform > click right in android.jar > Copy Path > Absolute Path > go to gradle and paste the path in implementation files:
dependencies{
implementation files('Paste Here')
}

Then try again go to Tools > Generate Javadoc and generate it.

Don't forget to remove the (implementation files...) line once you've managed to generate your javadoc.

  1. Use gradle as indicated by this solution that I published recently: Here

Comments

0

I found that unchecking "Include JDK and library sources in -sourcepath" in the Android Studio "JavaDocs" applet window allowed a build of javadocs for classes in the com.example.xxxx java folder.

Comments

0

@julian's answer will fail if you have a clean build and you use the autogenerated R or BuildConfig classes. To fix this ensure they're processed first:

android.applicationVariants.configureEach { variant ->

    def variantName = variant.name.capitalize()
    def javadocTaskName = "generate${variantName}Javadoc"

    tasks.register(javadocTaskName, Javadoc)

    def generateBuildConfigTask = tasks.named("generate${variantName}BuildConfig")
    def processResourcesTask = tasks.named("process${variantName}Resources")

    tasks.named(javadocTaskName) {
        description "Generates Javadoc for $variantName"


        dependsOn generateBuildConfigTask, processResourcesTask

        source = variant.javaCompileProvider.get().source
        destinationDir = file("$rootDir/javadoc/")

        // This just refers to the gradle task pass/failing, rather than javadoc
        failOnError true

        doFirst {
            ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"

            classpath += files(variant.javaCompileProvider.get().classpath.files) + files(ext.androidJar)

            // This is undocumented, but it's very useful incase javadoc is failing to produce any output due to import errors
            // options.addBooleanOption "-ignore-source-errors", true
            options.addStringOption "-show-members", "package"
            options.addStringOption('encoding', 'UTF-8')
            options.addStringOption('charSet', 'UTF-8')
        }
    }
}

The code here also makes sure it Avoiding Unnecessary Task Configuration to silence Android Studio inspection highlights

Comments

-1

I experienced the same problem and as a workaround, I generated the JavaDocs using Intellij. It's free for students, if that helps.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.