首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无法在Jar中找到或加载主类

错误:无法在Jar中找到或加载主类
EN

Stack Overflow用户
提问于 2020-03-03 19:06:53
回答 1查看 119关注 0票数 0

我使用Gradle构建了一个FatJar,但是如果我执行它,我会得到“错误:无法找到或加载主类de.fabipfolix.OlixBotMain”

但是它应该在那里,包和主类的名称是正确的。我重命名(重构)了一次,但即使我改回来,它也不起作用。

Gradle:

代码语言:javascript
复制
plugins {
id 'java'
}

group 'de.fabipfolix'
version '1.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    implementation 'net.dv8tion:JDA:4.1.1_109'
    implementation 'com.jagrosh:jda-utilities:3.0.2'
    implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.30.1'
    implementation group: 'com.sedmelluq', name: 'lavaplayer', version: '1.3.34'
}

task createFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'de.fabipfolix.OlixBotMain'
    }
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

有人知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 21:53:56

您可以在Gradle user guide中查看如何创建“胖”jars的示例。具体地说,您正在从compile配置中收集依赖项,该配置已被弃用,并且在您的项目中也未使用(您使用较新的implementation配置正确地执行了此操作)。但在任何一种情况下,您都应该收集运行时依赖项以及编译后的类。您还需要依赖于配置才能解决它。

下面是他们在用户指南中使用的方法:

代码语言:javascript
复制
task uberJar(type: Jar) {
    archiveClassifier = 'uber'

    from sourceSets.main.output

    dependsOn configurations.runtimeClasspath
    from {
        configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
    }
}

或者,您可以使用Shadow plugin来为您完成所有这些操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60505875

复制
相关文章

相似问题

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