首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin + Gradle -错误:找不到或加载主类

Kotlin + Gradle -错误:找不到或加载主类
EN

Stack Overflow用户
提问于 2022-08-12 21:11:03
回答 1查看 83关注 0票数 0

我试图用Kotlin创建一个控制台应用程序,所以当尝试运行jar时,它返回消息“未能找到或加载主类”。当我通过IntelliJ运行它时,它正常运行,但是当我试图通过命令行java -jar C:\wavecounter\bin\wavecounter_service.jar运行它时,就会发生错误。

WaveCounterService.kt

代码语言:javascript
复制
package br.com.mawan.waveCounterService

fun main(args: Array<String>) {
    println("Hello world!!")
}

build.gradle

代码语言:javascript
复制
plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.72'
}

group = "br.com.mawan.waveCounterService"
version = "1.0.0"

ext {
    dir_install = "c:\\wavecounter"
}

repositories {
    mavenCentral()
    jcenter()
    maven { setUrl("https://dl.bintray.com/kotlin/exposed") }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72")
    implementation("org.jetbrains.kotlin:kotlin-reflect:1.3.72")
    implementation("org.jetbrains.exposed:exposed:0.10.4")
    implementation("org.slf4j:slf4j-api:1.7.26")
    implementation("ch.qos.logback:logback-classic:1.2.3")
    implementation("ch.qos.logback:logback-core:1.2.3")
    implementation("com.google.code.gson:gson:2.8.5")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5")

    implementation("com.microsoft.sqlserver:mssql-jdbc:9.4.1.jre8")
    implementation("mysql:mysql-connector-java:8.0.18")
    implementation("net.sourceforge.jtds:jtds:1.3.1")
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

task backup_file_config(type: Copy) {
    from "${dir_install}\\config\\config_service.json"
    into "src/main/resources/"
}

task copy_files_bin(type: Copy) {
    from "${buildDir}\\libs\\wavecounter_service-${version}.jar"
    into "${dir_install}\\bin"
    rename ("wavecounter_service-${version}.jar", "wavecounter_service.jar")
}

task waveCounterServiceJar(type: Jar) {
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
    manifest {
        attributes 'Implementation-Title': 'WaveCounterService',
                'Main-Class': 'br.com.mawan.waveCounterService.WaveCounterServiceKt'
    }
    archivesBaseName = "wavecounter_service"
    configurations.implementation.setCanBeResolved(true)
    from {
        exclude '**/module-info.class'
        configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar

    doFirst {
        mkdir "${dir_install}\\backup\\mysql"
    }

    finalizedBy(copy_files_bin, backup_file_config)
}
EN

Stack Overflow用户

回答已采纳

发布于 2022-08-13 12:25:06

我解决了这个问题,但我无法解释为什么会起作用。如果有人知道我会花个时间解释。我正在查看一个旧项目,在它的gradle中有一个命令"exclude‘META/..RSA’*“。我把这个命令放在jar创建任务中,它就可以工作了。

代码语言:javascript
复制
task waveCounterServiceJar(type: Jar) {
    exclude 'META-INF/*.RSA'
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
    manifest {
        attributes 'Implementation-Title': 'WaveCounterService',
                'Main-Class': 'br.com.mawan.waveCounterService.WaveCounterServiceKt'
    }
    archivesBaseName = "wavecounter_service"
    configurations.implementation.setCanBeResolved(true)
    from {
        exclude '**/module-info.class'
        configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar

    doFirst {
        mkdir "${dir_install}\\backup\\mysql"
    }

    finalizedBy(copy_files_bin, backup_file_config)
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73339840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档