Java Gradle fatJar/uberJar无法找到或加载主类

Java Gradle fatJar/uberJar无法找到或加载主类,java,gradle,jar,Java,Gradle,Jar,我遇到一个问题,gradle fatJar/uberJar在尝试运行jar时导致以下异常: Error: Could not find or load main class com.domhauton.membrane.Main 简单的jar任务 from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar 工作时没有问题(直到它开始需要依赖项为止) 我假设这与我的一个依赖项更

我遇到一个问题,gradle fatJar/uberJar在尝试运行jar时导致以下异常:

Error: Could not find or load main class com.domhauton.membrane.Main
简单的jar任务

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
工作时没有问题(直到它开始需要依赖项为止)

我假设这与我的一个依赖项更改类路径有关,但我不确定为什么会发生这种情况

build.gradle的相关部分

project.version = '1.0.0-alpha.2'
project.group = 'com.domhauton.membrane'

jar {
    baseName = 'membrane-daemon-simple'
    version = project.version
    manifest {
        attributes 'Implementation-Title': 'Membrane Daemon',
                'Implementation-Version': project.version,
                'Main-Class': project.group + '.Main'
    }
}

//create a single Jar with all dependencies
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Membrane Daemon',
                'Implementation-Version': project.version,
                'Main-Class': project.group + '.Main'
    }
    baseName = 'membrane-daemon'
    version = project.version
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
Gradle构建文件位于此处(包含其余代码):


META-INF文件夹中充满了来自其他依赖项的文件,因此我不确定从何处开始查找冲突。

使用shadowjar再次尝试解决该问题,它工作得非常完美

相关代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: '1.2.4'
    }
}

apply plugin: 'com.github.johnrengelman.shadow'

project.version = '1.0.0-alpha.2'
project.group = 'com.domhauton.membrane'

jar {
    baseName = 'membrane-daemon'
    version = project.version
    manifest {
        attributes 'Implementation-Title': 'Membrane Daemon',
                'Implementation-Version': project.version,
                'Main-Class': project.group + '.Main'
    }
}

可以在这里的上下文中看到:

使用shadowjar再次运行了这个问题,它工作得非常完美

相关代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: '1.2.4'
    }
}

apply plugin: 'com.github.johnrengelman.shadow'

project.version = '1.0.0-alpha.2'
project.group = 'com.domhauton.membrane'

jar {
    baseName = 'membrane-daemon'
    version = project.version
    manifest {
        attributes 'Implementation-Title': 'Membrane Daemon',
                'Implementation-Version': project.version,
                'Main-Class': project.group + '.Main'
    }
}
可以在这里的上下文中看到: