【问题标题】:Can't access commonMain multiplatform classes from a jvm-only module无法从仅 jvm 模块访问 commonMain 多平台类
【发布时间】:2021-01-21 15:31:44
【问题描述】:

我有一个具有以下结构的项目:

  • multiplatformmodule - 包含一个 kotlin 类 SomeMultiPlatformClass
  • jvmmodule - 一个纯 jvm 模块,依赖于 multiplatformmodule

问题是在 jvmmodule 中运行测试时我无法从multiplatformmodule 访问任何类。我得到java.lang.NoClassDefFoundError: com/example/multiplatform/multiplatformmodule/SomeMultiPlatformClass。 IDE (Anroid Studio) 也将此类标记为未解决。但是,当从另一个多平台模块访问 multplatformmodule 类时,它会构建。

在示例项目https://github.com/micHar/kmm-dependency-issues/tree/master 中可以看到更多内容。

【问题讨论】:

标签: unit-testing kotlin intellij-idea jvm kotlin-multiplatform


【解决方案1】:

我克隆了您的存储库并使用 Intellij 2020.3.1 打开它,它似乎可以解决 SomeMultiPlatformClass 问题。我尝试从 IDE 运行测试,但由于不同的原因无法正常工作。当我将 @Test 更改为指向 kotlin.test.Test 时,IDE 也可以正常运行测试。

https://github.com/kpgalligan/kmm-dependency-issues

【讨论】:

  • 谢谢!将尝试使用 Intellij,也许它与 AS 相关(我使用的是 4.2,基于 Intellij 2020.3.1 的版本现在在 Canary 中)。
  • 好吧,我尝试了 IDEA 2020.3.1 和 Android Studio 2020.3.2 Canary,它们对我都有同样的问题。出于某种原因,我认为这可能是苹果芯片的问题,但也在我基于英特尔的旧 Mac 上进行了尝试,但它失败了。即使在您的代码更改之后。不知道如何继续...
  • 您使用的是 mac 还是其他操作系统? (在之前的评论中,我的意思当然是 Android Studio 2020.3.1 Canary)。
  • Macbook Pro Intel(16 英寸),操作系统为 Catalina,10.15.6
  • 我的朋友刚刚在 Windows (AS 4.2.1) 上尝试了新的结帐 - 和我的一样失败了。为什么它对你有用是一个谜......
【解决方案2】:

这显然是一个 Android Studio 错误。使用 gradle 运行您的项目,即 ./gradlew test 将运行测试 (SomeJvmTest) 就好了。

【讨论】:

    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多