堆栈溢出
使用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'
}