我使用 gradle kotlin dsl 构建了 scala/java polyglot 项目[gradle-scala-java-polyglot-project]
1 。
下面是项目结构
± tree .
├── build.gradle.kts
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── User.java
│ ├── resources
│ └── scala
│ └── com
│ └── example
│ ├── Book.scala
│ └── main
│ └── MainApp.scala
└── test
├── java
└── resources
如您所见,java 代码有一个类com.example.User.java
,scala 有两个类com.example.Book.scala
,com.example.main.MainApp.scala
.
当 scala 类使用 java 类时,构建成功。
但是当我在 java 类中使用 scala 类时,我得到符号未找到错误。
下面是项目构建文件。
plugins {
java
scala
}
group = "org.example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
scala {
zincVersion.set("1.3.5")
}
sourceSets {
main {
withConvention(ScalaSourceSet::class) {
scala {
setSrcDirs(listOf("src/main/scala", "src/main/java"))
}
}
}
test {
withConvention(ScalaSourceSet::class) {
scala {
setSrcDirs(listOf("src/test/scala", "src/test/java"))
}
}
}
}
dependencies {
implementation("org.scala-lang:scala-library:2.13.5")
implementation("org.scala-lang:scala-compiler:2.13.5")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}
该项目也在github上。如何混合使用 java/scala 类并修复此错误?
注意:我的项目使用 scala 2.13.5 版本的 scala。