面对一些未知问题,一些后端jvm内部错误

时间:2018-04-13 13:41:02

标签: java android kotlin jvm

我面临一些未知问题,看起来是一些内部编译错误: 这些是构建apk时的错误:

Error:org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Couldn't transform method node: doResume (Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object;:
Error:org.jetbrains.org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction #375 L0: Incompatible stack heights
Error:org.jetbrains.org.objectweb.asm.tree.analysis.AnalyzerException: Incompatible stack heights

任何帮助将不胜感激。

7 个答案:

答案 0 :(得分:3)

经过长时间的努力,我找到了解决方案,问题的代码是:

  if (investorType=="Institutional")
            {linSignUp
                if (firmName.isEmpty()) {

首先,如果是偶然放置在这里的线性布局的linSignUp id的块,则不存在问题。 因此,当我删除它时,仅在此处的视图没有用,构建生成成功,但我仍然感到惊讶它应该在编译时给我错误。

注意:我在项目中使用anko库,如果我使用root.linSignUp,这也可以解决问题。

答案 1 :(得分:1)

这是要查找的最令人沮丧的错误之一。

这是我遇到的错误:

java.lang.IllegalStateException: Backend Internal error: Exception during code generation
Cause: Back-end (JVM) Internal error: wrong code generated
org.jetbrains.kotlin.codegen.CompilationException Back-end (JVM) Internal error: Couldn't transform method node:
.....

如果您的堆栈跟踪进一步与视图和字符串有关,对我来说,罪魁祸首是xml视图ID太长。

此名称导致错误:team_management_players_recycler_view_layout 我将其简化为:team_man_players_recycler_layout

繁荣错误消失了!

希望这可以帮助其他人!

答案 2 :(得分:1)

我在 kotlin 1.3.72 中遇到了相同的错误,导致该错误的代码是暂停函数中包含的递归暂停函数:

suspend fun function1(){
  suspend fun internalFun(){
   // does something
   internalFun()  //<-- this was causing the problem
  }    
  internalFun()
}

我通过重新安排代码的方式来解决问题,使自己无需在内部调用internalFun()。 我不知道它们是suspend函数的事实是否有用。

答案 3 :(得分:0)

如果将来对其他人有帮助,我的问题是由于使用了我的自定义扩展名:

suspend operator fun <T> MutableLiveData<T>.plusAssign(newValue: T) = ...

它的用法如下:

init {
    job = GlobalScope.launch {
        while (true) {
            delay(1000)
            foo += bar // This is the error.
        }
    }
}

使用它是完全可以的:

suspend fun refreshNextJob() {
    foo += bar
}

不确定为什么会发生这种情况,但是也许以后会有所帮助。

答案 4 :(得分:0)

就我而言,我遇到了这个异常:

  

java.lang.IllegalStateException:后端内部错误:异常   代码生成期间原因:后端(JVM)内部错误:错误   代码生成的org.jetbrains.kotlin.codegen.CompilationException   后端(JVM)内部错误:无法转换方法节点:getS   ()Ljava / lang / String ;: @ Lorg / jetbrains / annotations / NotNull;()//   隐形L0       线号9 L0       新的com / example / GsonConverter       DUP       INVOKESPECIAL com / example / GsonConverter。 ()V       ASTORE 1 L1       LINENUMBER 10 L1 ...

     

原因:UTF8字符串太大元素未知根本原因是   抛出:ByteVector.java:246原因:后端(JVM)内部错误:   无法转换方法节点:getS()Ljava / lang / String ;:
  @ Lorg / jetbrains / annotations / NotNull;()//不可见的L0 ...

     

原因:UTF8字符串太大元素未知根本原因是   抛出:ByteVector.java:246正在位置(8,5)编译文件   在   C:/用户/用户/ AndroidStudioProjects / MyApplication03 / app / src / main / java / com / example / myapplication / ATest.kt   引发根本原因是:TransformationMethodVisitor.kt:92 File   正在以下位置编译:   文件:// C:/Users/user/AndroidStudioProjects/MyApplication03/app/src/main/java/com/example/myapplication/ATest.kt   根本原因被抛出:FunctionCodegen.java:1043 ...

     

原因:UTF8字符串太大元素未知,根本原因是   抛出:ByteVector.java:246 ...

我从应用程序中删除了类ATest,但没有帮助。问题出在大约80 Kb(JSON)的恒定字符串中。

答案 5 :(得分:0)

就我而言,我只是忘记键入视图名称时添加方法调用。

img_my_best_image

代替

img_my_best_image.show()

答案 6 :(得分:0)

错误消息:“ e:org.jetbrains.kotlin.codegen.CompilationException:后端(JVM)内部错误:生成的字节码错误”

在我的情况下,我在MainViewModel.kt的一种方法中使用了runBlocking {}。

直到我更改了该方法中的参数名称为止,该应用程序已成功通过runBlocking {}进行编译(无论如何我都不应使用)。

我将runBlocking {}替换为viewModelScope.launch {},以获取此错误消息。