nullpointerexception - Android Studio JavaDoc 错误引发 NullPointerException
问题描述
Android Studio 无法创建 JavaDoc。它抛出一个空指针异常,并且无法识别任何 android 打包项目。
...
/home/<user>/AndroidStudioProjects/<project>/app/src/main/java/com/example/simpleparadox/listycity/MainActivity.java:14: error: cannot access ViewGroup
public class MainActivity 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)
7 errors
然后我找到了一个解决方法,可以-bootclasspath path_to_sdk_android_jar_file
在 JavaDoc 对话框中添加其他命令行参数文本框。
但是,较新的 Java 已弃用-bootclasspath
. 它引发另一个错误,如下所示:
error: option --boot-class-path not allowed with target 11
所以我-sourcepath
改用了。这带来了旧错误(NullPointerException)。
在这一点上,我几乎迷路了。
顺便说一句,如果我选择一个只有 Java 元素的类(无 android)并只为该特定文件创建 JavaDoc,它会很好地创建 JavaDoc。但是对于一个有很多类的项目来说,这不是一个好的解决方法。
解决方案
我遇到了与您相同的问题,有几个导入错误..
以下解决方案对我有用(我从mike192的回答中得到它,请参阅此处的链接)
task javadoc(type: Javadoc) {
doFirst {
configurations.implementation
.filter { it.name.endsWith('.aar') }
.each { aar ->
copy {
from zipTree(aar)
include "**/classes.jar"
into "$buildDir/tmp/aarsToJars/${aar.name.replace('.aar', '')}/"
}
}
}
configurations.implementation.setCanBeResolved(true)
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
classpath += configurations.implementation
classpath += fileTree(dir: "$buildDir/tmp/aarsToJars/")
destinationDir = file("${project.buildDir}/outputs/javadoc/")
failOnError false
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
您需要做的就是在依赖项之前将代码添加到 build.gradle 文件中{}
然后,双击您的Ctrl
按钮并执行以下命令:
gradle javadoc
然后可以在项目目录 \app\build\outputs\javadoc 中找到 javadoc 的结果
我希望这对你有用
推荐阅读
- java - Updating a List Size for all users
- reactjs - (React Native) 如何在 LinkedIn 上向特定的人分享消息
- django - Django static file not found
- php - 查询经纬度不返回任何结果mysql
- c# - .Net Core 2.1中的主事务发生错误时如何回滚子事务
- php - Why we create multiple objects in same class in oop?
- r - R gsub/str_replace 返回一个反斜杠
- python - 在 Python/Numpy 中为多维评估创建参数
- visual-studio - Unity 2D 对撞机和刚体
- jquery - Modifying the tag via jQuery each loop