Can't access commonMain multiplatform classes from a jvm-only module

Viewed 591

I have a project with following structure:

  • multiplatformmodule - contains a single kotlin class SomeMultiPlatformClass
  • jvmmodule - a pure jvm module which depends on multiplatformmodule

The problem is that within the jvmmodule I can't access any class from multiplatformmodule when running a test. I get java.lang.NoClassDefFoundError: com/example/multiplatform/multiplatformmodule/SomeMultiPlatformClass. IDE (Anroid Studio) also marks this class as unresolved. It builds, however, when the multplatformmodule classes are accessed from another multiplatform module.

Much more can be seen in the example project https://github.com/micHar/kmm-dependency-issues/tree/master.

2 Answers

I cloned your repo and opened it with Intellij 2020.3.1 and it seems to resolve SomeMultiPlatformClass fine. I tried to run tests from the IDE, which didn't work for different reasons. When I changed the @Test to point to kotlin.test.Test the IDE also ran the tests fine.

enter image description here

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

This is clearly an Android Studio bug. Running your project with gradle, i.e. ./gradlew test will run the test (SomeJvmTest) just fine.

Related