'setter for mainClassName: String' is deprecated. Deprecated in Java - Printable Version +- 0Day Forums (https://0day.red) +-- Forum: Coding (https://0day.red/Forum-Coding) +--- Forum: Kotlin (https://0day.red/Forum-Kotlin) +--- Thread: 'setter for mainClassName: String' is deprecated. Deprecated in Java (/Thread-39-setter-for-mainClassName-String-39-is-deprecated-Deprecated-in-Java) |
'setter for mainClassName: String' is deprecated. Deprecated in Java - introvenient9347 - 07-20-2023 I have a vert.x web app written in Kotlin and Gradle as the build tool. The web app has been generated with [To see links please register here] .In the `build.gradle.kts` it shows: [![enter image description here][1]][1] that `mainClassName` has been deprecated. the content of the `build.gradle.kts` file: ``` import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.tasks.testing.logging.TestLogEvent.* import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { kotlin ("jvm") version "1.4.10" application id("com.github.johnrengelman.shadow") version "5.2.0" id("org.flywaydb.flyway") version "7.1.1" } group = "io.databaker" version = "1.0.0-SNAPSHOT" repositories { mavenCentral() jcenter() } val kotlinVersion = "1.4.10" val vertxVersion = "4.0.0.CR1" val junitJupiterVersion = "5.6.0" val mainVerticleName = "io.databaker.MainVerticle" val watchForChange = "src/**/*" val doOnChange = "./gradlew classes" val launcherClassName = "io.vertx.core.Launcher" application { mainClassName = launcherClassName } dependencies { implementation("io.vertx:vertx-auth-jwt:$vertxVersion") implementation("io.vertx:vertx-web:$vertxVersion") implementation("io.vertx:vertx-pg-client:$vertxVersion") implementation("io.vertx:vertx-lang-kotlin-coroutines:$vertxVersion") implementation("io.vertx:vertx-json-schema:$vertxVersion") implementation("io.vertx:vertx-lang-kotlin:$vertxVersion") implementation(kotlin("stdlib-jdk8")) testImplementation("io.vertx:vertx-junit5:$vertxVersion") testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion") } val compileKotlin: KotlinCompile by tasks compileKotlin.kotlinOptions.jvmTarget = "11" tasks.withType<ShadowJar> { archiveClassifier.set("fat") manifest { attributes(mapOf("Main-Verticle" to mainVerticleName)) } mergeServiceFiles { include("META-INF/services/io.vertx.core.spi.VerticleFactory") } } tasks.withType<Test> { useJUnitPlatform() testLogging { events = setOf(PASSED, SKIPPED, FAILED) } } tasks.withType<JavaExec> { args = listOf("run", mainVerticleName, "--redeploy=$watchForChange", "--launcher-class=$launcherClassName", "--on-redeploy=$doOnChange") } ``` Through what should I replace the `mainClassName`? [1]: RE: 'setter for mainClassName: String' is deprecated. Deprecated in Java - emmersonp - 07-20-2023 It seems the latest way of doing this is: application { mainClass.set(launcherClassName) } RE: 'setter for mainClassName: String' is deprecated. Deprecated in Java - Proflashcube28 - 07-20-2023 Setting `mainClassName` on the top level should work too: ```kotlin mainClassName = "io.vertx.core.Launcher" ``` [To see links please register here] RE: 'setter for mainClassName: String' is deprecated. Deprecated in Java - mufinella38 - 07-20-2023 for spring boot project ```kotlin springBoot { mainClass.set("your.full.classname") } ``` RE: 'setter for mainClassName: String' is deprecated. Deprecated in Java - subsidist981718 - 07-20-2023 Any of the below 3 should work: springBoot { mainClass.set('package.class') } bootJar { mainClass.set('package.class') } application { mainClass.set('package.class') } |