Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Dokka失败:com.intellij.psi.impl.source.PsiClassImpl无法转换为com.intellij.psi.PsiJavaFile_Android_Gradle_Aar_Kotlin Dokka - Fatal编程技术网

Android Dokka失败:com.intellij.psi.impl.source.PsiClassImpl无法转换为com.intellij.psi.PsiJavaFile

Android Dokka失败:com.intellij.psi.impl.source.PsiClassImpl无法转换为com.intellij.psi.PsiJavaFile,android,gradle,aar,kotlin-dokka,Android,Gradle,Aar,Kotlin Dokka,我有一个生成Android人工制品的构建(主要是.aar)和dokka生成的文档包(代码库是Kotlin+Java) 由于最近的一些更改,dokka开始失败,出现了这个神秘的错误: > Task :mylib:dokka FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':mylib:dokka'. > com.intellij.psi.imp

我有一个生成Android人工制品的构建(主要是
.aar
)和
dokka
生成的文档包(代码库是Kotlin+Java)

由于最近的一些更改,
dokka
开始失败,出现了这个神秘的错误:

> Task :mylib:dokka FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mylib:dokka'.
> com.intellij.psi.impl.source.PsiClassImpl cannot be cast to com.intellij.psi.PsiJavaFile

任何帮助都将不胜感激。我目前似乎无法找到问题的根源。

我无法确定问题的根源,但我可以肯定地说,
Dokka
在这方面存在一些问题

在我的更改中,我最初引入了一个新的注释类,该类基于Android的抽象类(以及相关的助手方法),用Java编写

这两个步骤似乎有所帮助:

  • 切换到Kotlin以实现注释类,然后在文件的根范围定义注释类(而不是作为类的内部项)

  • 在Dokka的配置中抑制注释的包,即-


  • 最终的结果是文档无法引用带注释的类(这并不奇怪,因为它被抑制了),但javadoc生成完全成功。

    我无法确定问题的根源,但我可以肯定地说,
    Dokka
    在这方面存在一些问题

    在我的更改中,我最初引入了一个新的注释类,该类基于Android的抽象类(以及相关的助手方法),用Java编写

    这两个步骤似乎有所帮助:

  • 切换到Kotlin以实现注释类,然后在文件的根范围定义注释类(而不是作为类的内部项)

  • 在Dokka的配置中抑制注释的包,即-


  • 最终的结果是文档无法引用带注释的类(这并不奇怪,因为它被抑制了),但javadoc生成完全成功。

    在我的例子中,我只需要采取步骤1来解决ClassCastException。我不必抑制存在注释的新包。事实上,在大多数情况下,我所做的只是将注释从一个内部类移动到同一个包中的顶级类,它为我解决了这个问题。很有趣!我现在不记得在应用步骤2之前发生了什么错误,但如果我记得正确,它无法解析。在我的情况下,我只需要采取步骤1来解决ClassCastException。我不必抑制存在注释的新包。事实上,在大多数情况下,我所做的只是将注释从一个内部类移动到同一个包中的顶级类,它为我解决了这个问题。很有趣!我现在不记得在应用步骤2之前发生了什么错误,但如果我记得正确,它就无法解析。
    dokka {
      ...
    
      packageOptions {
        prefix = "com.mylib.myannotation"
        suppress = true
      }
    }