格拉德尔:"Error: Could not find or load main class Main"。通过 Gradle 构建后无法运行文件



堆栈溢出

使用Gradle构建java应用程序时遇到问题。在构建jar文件后,当尝试使用运行它时

java -jar ZoneNewsDiscordBot-1.0-SNAPSHOT.jar

在终端中得到了这个

Error: Could not find or load main class Main

我的项目文件的层次

- ...
- .idea
- build
- classes
- java
- main
- Main.class
- NewsGenerator.class
- Resources.class
- libs
- ZoneNewsDiscordBot-1.0-SNAPSHOT.jar
- resources
- main
- META-INF
MANIFEST.MF
- application.properties
- tmp
- compileJava
- jar 
- MANIFEST.MF
- gradle
- img
- input
- out
- src
- main
- java
- Main.java
- NewsGenerator.java
- Resources.java
- build.gradle
- gradlew
- gradlew.bat
- ...

build.gradle

plugins {
id 'java'
}

jar {
manifest {
attributes(
'Main-Class': "Main"
)
}
}

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

sourceCompatibility = 1.8

repositories {
mavenCentral()
jcenter()
}

dependencies {
implementation "joda-time:joda-time:2.2"
testCompile group: 'junit', name: 'junit', version: '4.12'
compile 'net.dv8tion:JDA:4.2.0_214'

//for JSON parsing
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.3'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.3'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.11.3'


//for uploading pictures from Web Page
compile group: 'net.sourceforge.htmlunit', name: 'htmlunit', version: '2.45.0'

//for working with Instagram
compile group: 'com.restfb', name: 'restfb', version: '3.13.0'
implementation 'com.github.instagram4j:instagram4j:2.0.3'
compile group: 'org.brunocvcunha.instagram4j', name: 'instagram4j', version: '1.14'

task stage(dependsOn: ['build', 'clean'])
build.mustRunAfter clean
}

我试着检查MANIFEST.MF,得到了这个
MANIFEST-MF

Manifest-Version: 1.0
Main-Class: Main

构建的JAR文件(ZoneNewsDiscordBot-1.0-SNAPSHOT.jar(包含下一个文件:

- META-INF (folder)
- MANIFEST.MF
- application.properties
- Main.class
- NewsGenerator.class
- Resourses$1.class
- Resourses.class
- Test.class 

Test.class是我的一些测试的临时类,我不认为问题出在它身上。

我不明白问题出在哪里。我写了正确的道路。。。为什么找不到Main类?

我像这个一样解决了它

这是因为包含包名的类名没有写入build.gradle文件的mainClassName条目中。

EX(

1.

package example.sphinx;

public class ExampleMain {

}
plugin : 'java'

mainClassName = 'example.sphinx.ExampleClass'

2.添加应用

plugins {
id 'java'
id 'application'
}

最新更新