Estoy haciendo un proyecto multiplataforma.
Una parte de mi archivo gradle se ve así
... kotlin { jvm() jvm("api") js() mingwX64("mingw") sourceSets { ... val jvmMain by getting { dependencies { implementation ("org.jetbrains.kotlin:kotlin-stdlib-jdk8") } } val jvmTest by getting { dependencies { implementation ("org.jetbrains.kotlin:kotlin-test") implementation ("org.jetbrains.kotlin:kotlin-test-junit") } } val apiMain by getting { dependencies { dependsOn(jvmMain) } } val jsMain by getting { dependencies { implementation ("org.jetbrains.kotlin:kotlin-stdlib-js") } } ... } }Ahora, en las fuentes de commonsMain, aparece un error de IDE (subrayado rojo) que dice "La clase esperada Sample no tiene una declaración real en apiMain", pero apiMain depende de jvmMain, que tiene la declaración real.
No creo que necesite una declaración real en apiMain ya que ya tengo una en jvm.
¿Debo adoptar un enfoque diferente al configurar mis conjuntos de fuentes?
De todos modos, el proyecto compila bien y puedo ejecutar apiMain, pero el error de IDE realmente me molesta.
Este es un error conocido del IDE. Vea el ticket de YouTrack aquí .
Por ahora, puede usar @Suppress("NO_ACTUAL_FOR_EXPECT") para deshacerse de la advertencia en su IDE. Sin embargo, realmente no lo recomendaría, porque obtendrá un bloqueo de tiempo de ejecución en lugar de un error de tiempo de compilación si falta alguna implementación actual .
Deben estar bajo el mismo nombre de paquete.
También verifique si el nombre de su paquete es el mismo que recibe el error
la clase esperada Sample no tiene una declaración real en apiMain
Necesitas tener el paquete apiMain.
En mi caso tuve
Y tuve que crear ambas carpetas en recursos. 