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

Gradle 错误:无法在Jar中找到或加载主类,gradle,jar,Gradle,Jar,我用Gradle构建了一个FatJar,但如果执行它,我会得到“错误:无法找到或加载主类de.fabipfolix.OlixBotMain” 但它应该在那个里,包和主类的名称是正确的。 我重新命名(重构)了它一次,但即使我把它改回来,它也不起作用 格拉德尔: plugins { id 'java' } group 'de.fabipfolix' version '1.0' sourceCompatibility = 1.8 repositories { mavenCentral()

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

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

格拉德尔:

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) } }
}

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

您可以看到如何在中创建“胖”罐子的示例。具体地说,您正在从
编译
配置中收集依赖项,该配置已弃用,并且在您的项目中也未使用过(您在使用较新的
实现
配置时操作正确)。但是在任何一种情况下,您都应该收集运行时依赖项以及已编译的类。您还需要依赖配置来解决它

以下是他们在《用户指南》中的操作方式:

task uberJar(type: Jar) {
    archiveClassifier = 'uber'

    from sourceSets.main.output

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

或者,您也可以使用为您完成所有这些工作的。

谢谢,您已经尝试用implement替换compile,但也没有成功。也许我应该多了解一些关于格拉德的情况。