I have scala/java polyglot project [gradle-scala-java-polyglot-project]
1 build using gradle kotlin dsl.
Below is the project structure
± 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
As you see java code has one class com.example.User.java
and scala has 2 classes com.example.Book.scala
and com.example.main.MainApp.scala
.
when scala classes uses java classes the build is successful.
But when I use scala class inside java classes I get symbol not found error.
Below is the project build file.
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")
}
The project is on github as well. How can I make mixed use of java/scala class together and fix this error?
Note: My project uses scala 2.13.5 version of scala.