无法找到或加载主类<classname>

时间:2016-07-28 18:39:15

标签: java gradle

我创建了一个Spring引导gradle应用程序。我在build.gradle中指定了主类名称为

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

sourceCompatibility = 1.8
def appName = 'app'
buildDir = 'gradle-build'
mainClassName = 'package.Application'
dependencies{
   ----
}
configurations {
    compile.exclude group: 'ch.qos.logback'
}

jar {
    baseName = appName
    manifest {
        attributes 'Implementation-Title': 'app',
                'Implementation-Version': version,
                'Main-Class': mainClassName
    }
}

startScripts {
    applicationName = appName
}

distributions {
    main {
        baseName = appName
    }
}

当我从eclipse运行我的主类时,它运行正常。但是当我执行将在gradle-build中生成的jar文件时,它会抛出错误&#34;无法找到或加载主类&#34;。

我正在执行命令

    java -jar app.jar

我也尝试过其他命令

    java -cp -jar app.jar
    java -cp app.jar

在所有情况下,我都会遇到同样的错误。

我的清单文件是这样的

 Manifest-Version: 1.0
Implementation-Title: app
Implementation-Version: 1.0.0
Main-Class: package.Application

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我遇到了非常类似的问题。

原来问题是我的Meta-INF,在我的jar文件中有一些RSA,SF和dsa文件。

更改您的jar声明,如下所示

jar {
    baseName = appName
    manifest {
        attributes 'Implementation-Title': 'app',
                'Implementation-Version': version,
                'Main-Class': mainClassName
    }
    exclude ('META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA')

}