所以,6.4(终于)出来了,并且有 JPMS support
迫不及待地想试一试,我开始修改我们的一个项目以便使用它。
jjohannes 在他的 repo 之一上有一个 (kotlin) 示例
我试图将重要的内容复制/粘贴到我们的项目中 here
但不幸的是我没有成功。
每当我尝试运行时,我总是会得到:
C:\Users\elect\IdeaProjects\kotlin-unsigned\src\main\java\module-info.java:4: error: module not found: kotlin.stdlib.jdk8 requires kotlin.stdlib.jdk8;
引用
module-info.java
:module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8; // error
exports unsigned;
}
stdlib
或 stdlib-jdk8
变化不大我究竟做错了什么?
最佳答案
我检查了你的 repo 。
您将需要这些修复程序。
java
插入。 plugins {
kotlin("jvm") version "1.3.72"
java
}
java {
modularity.inferModulePath.set(true)
}
kotlin("stdlib")
在所有 3 个地方(2 个在 build.gradle.kts 和 1 个在 module-info.java)。 dependencies {
implementation(kotlin("stdlib"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
}
module com.github.kotlin_graphics.kotlin_unsigned {
requires kotlin.stdlib;
// requires kotlin.stdlib.jdk8;
exports unsigned;
}
对于
kotlin("stdlib-jdk8")
,您需要在 kotlin("stdlib")
旁边添加它dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("stdlib-jdk8"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
components { withModule<ModularKotlinRule>(kotlin("stdlib-jdk8")) }
}
然后,您的
module-info.java
可module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8;
exports unsigned;
}
./gradlew build
为我成功 build 。我还添加了缺少的测试依赖项:
testImplementation("io.kotlintest:kotlintest-runner-junit5:$kotlintest_version")
更新:列出两个
stdlib
和 stdlb-jdk8
关于kotlin - Gradle 6.4、Kotlin 和 JPMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638287/