Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 410
Michał Klimczak Avatar asked Jan 21 '21 15:01

Michał Klimczak


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

like image 50
Kevin Galligan Avatar answered Oct 05 '22 21:10

Kevin Galligan


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

like image 34
naimdjon Avatar answered Oct 05 '22 23:10

naimdjon