【问题标题】:java.lang.NoSuchFieldError: No field Companion of type Landroidx/compose/foundation/layout/BoxScope$Companion;java.lang.NoSuchFieldError:没有 Landroidx/compose/foundation/layout/BoxScope$Companion 类型的字段伴侣;
【发布时间】:2021-07-08 10:26:48
【问题描述】:

我是第一次使用 Jetpack Compose,但我收到了这个错误。我还没有弄清楚问题到底出在哪里,但我正在使用单活动架构。如果需要更多信息,请告诉我。 根据错误,问题似乎来自脚手架。

                val scaffoldState = rememberScaffoldState()

                Scaffold(
                    scaffoldState = scaffoldState,
                    snackbarHost = {
                        SnackbarHost(hostState = it)
                    }
                ) {
java.lang.NoSuchFieldError: No field Companion of type Landroidx/compose/foundation/layout/BoxScope$Companion; in class Landroidx/compose/foundation/layout/BoxScope; or its superclasses (declaration of 'androidx.compose.foundation.layout.BoxScope' appears in /data/app/com.octagon_technologies.scafe-0B8-dDpbnRqa6fydxFPekw==/base.apk)
        at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:149)
        at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:105)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
        at androidx.compose.material.SurfaceKt.Surface-F-jzlyU(Surface.kt:102)
        at androidx.compose.material.ScaffoldKt$Scaffold$child$1.invoke(Scaffold.kt:168)
        at androidx.compose.material.ScaffoldKt$Scaffold$child$1.invoke(Scaffold.kt:167)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.material.ScaffoldKt.Scaffold-J67Y1T8(Scaffold.kt:197)
        at com.octagon_technologies.scafe.presentation.MainActivity$onCreate$1$1.invoke(MainActivity.kt:54)
        at com.octagon_technologies.scafe.presentation.MainActivity$onCreate$1$1.invoke(MainActivity.kt:47)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
        at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:246)
        at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:78)
        at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:77)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
        at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:69)
        at com.octagon_technologies.scafe.presentation.ui.theme.ThemeKt.ScafeTheme(Theme.kt:46)
        at com.octagon_technologies.scafe.presentation.MainActivity$onCreate$1.invoke(MainActivity.kt:47)
        at com.octagon_technologies.scafe.presentation.MainActivity$onCreate$1.invoke(MainActivity.kt:46)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:346)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:202)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:201)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)

【问题讨论】:

  • 确保您引入了一组一致的 Compose 依赖项。 beta04compose-foundation 工件中对 BoxScope 进行了更改。也许您正在获得该工件的beta04,但正在获得一个较旧的compose-material 工件。
  • 我在尝试使用 Card() 可组合时遇到了同样的错误,您找到解决方案了吗?

标签: android kotlin android-jetpack-compose android-jetpack-compose-scaffold


【解决方案1】:

此答案基于帮助我修复错误的 CommonsWare 评论。

解决方案是使用一组一致的 Compose 依赖项。 beta04 在 compose-foundation 工件中对 BoxScope 进行了更改。也许您正在获得该工件的 beta04,但正在获得较旧的 compose-material 工件。

【讨论】:

    【解决方案2】:

    我遇到了同样的错误,并通过更新 compose 版本解决了它。 Android Studio生成的新项目模板自带compose版本1.0.0-beta01

    打开 build.gradle 文件并更新

    compose_version = '1.0.0-beta05'
    

    如果您愿意,也可以更新。

    【讨论】:

      【解决方案3】:

      androidx.navigation:navigation-compose:1.0.0-alpha10 添加为依赖项后出现此错误。

      对我有用的是降级到androidx.navigation:navigation-compose:1.0.0-alpha09

      【讨论】:

        【解决方案4】:

        这段代码我也遇到了同样的错误

        java.lang.NoSuchFieldError: 
        No static field Companion of type Landroidx/compose/foundation/layout/BoxScope$Companion; 
        in class Landroidx/compose/foundation/layout/BoxScope; 
        or its superclasses (declaration of 'androidx.compose.foundation.layout.BoxScope' 
        appears in /data/app/ink.iamt.demo-l1DoSMoQUFGcF5KYI5RU0w==/base.apk)
        
        class MainActivity : ComponentActivity() {
            override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                setContent {
                    Card {
                        Text("Hello, Compose")
                    }
                }
            }
        }
        

        你知道我的代码再简单不过了。所以我认为这不应该是我的错。 我检查了我的 Android Studio 版本,它是 2020.3.1 Canary 14,这是最新版本。并检查了 Jetpack compose 的 build.gradle,它是

            val compose_version by extra("1.0.0-beta01")
        

        所以最新的 Android Studio 创建了一个新的 Compose 项目,其 compose 版本为 1.0.0-beta01,而最新的 compose 版本为 1.0.0-beta04。然后我尝试将版本更新到 beta04 并重新运行我的应用程序。然后就可以了!

        所以请尝试将您的 compose 版本更新到最新版本,看看是否有运气。

        【讨论】:

          猜你喜欢
          • 2021-04-25
          • 2021-09-05
          • 1970-01-01
          • 2018-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-09
          • 2011-04-11
          相关资源
          最近更新 更多