Gradle打成Jar包,提示找不到主类

发布于 2022-09-12 03:04:47 字数 1140 浏览 27 评论 0

最近写了一个小的玩具程序想放到树莓派上跑跑,程序用Kotlin写的,但是打成Jar包的时候提示找不到主类,求助,应该怎么解决呢?jar包中是找的到这个主类的
image.png
image.png

以下为主类

object RobotClient {

    private val logger = LoggerFactory.getLogger(this.javaClass)

    private const val url = "192.168.10.140"
    private const val port = 9760

    @Throws(InterruptedException::class)
    fun client() {
        val group = NioEventLoopGroup()
        val bootstrap = Bootstrap()
        try {
            bootstrap.group(group)
                    .channel(NioSocketChannel::class.java)
                    .option(ChannelOption.SO_KEEPALIVE, true)
//                    .option(ChannelOption.SO_BACKLOG, 1024)
                    .handler(RobotClientInitializer())

            val channelFuture = bootstrap.connect(url, port).sync()

            channelFuture.channel().closeFuture().sync()
        } finally {
            group.shutdownGracefully()
        }
    }

    @JvmStatic
    fun main(args: Array<String>) {
        client()
    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔少女心 2022-09-19 03:04:47

自己解决了,不要用gradle的jar,而用另一个插件进行打包:

plugins {
    id 'java'
    id 'application'
    id 'org.jetbrains.kotlin.jvm' version '1.3.72'
    id "org.jetbrains.kotlin.kapt" version "1.3.72"
    // 就是这个插件
    id "com.github.johnrengelman.shadow" version "5.2.0"
}

group 'com.dennis'
version '1.0-SNAPSHOT'

repositories {
    mavenLocal()
    mavenCentral()
}

application {
    mainClassName = 'com.dennis.RobotClientKt'
}

//禁掉jar task
jar.enabled = false
shadowJar {
    baseName = 'robot'
    //classifier是生成jar包的后缀
    classifier = null
    version = '1.0.0'
    manifest {
        // 它指定的mainclass就找得到,奇怪
        attributes 'Main-Class': 'com.dennis.RobotClientKt'
    }
}

assemble.dependsOn(shadowJar)

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'io.netty', name: 'netty-all', version: '4.1.42.Final'
    compile group: 'org.eclipse.milo', name: 'sdk-client', version: '0.4.1'
    compile group: 'org.eclipse.milo', name: 'sdk-server', version: '0.4.1'
    compile group: 'org.eclipse.milo', name: 'sdk-core', version: '0.4.1'
    compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: '1.3.72'
    compile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.3.72'
    compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.3.5'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.30'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文