java 1.8 - gradle找不到主类
问题描述:
我试图用gradlew来运行gradle。我的文件夹结构如下所示:java 1.8 - gradle找不到主类
src
└── main
└── java
└── hello
└── Greeting.java
这是我的build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
mainClassName = 'hello.Greeting'
sourceSets.main.java.srcDirs = ['src']
jar {
baseName = 'gs-rest-service'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile('org.springframework.boot:spring-boot-starter-test')
}
我可以./gradlew运行成功打造,但./gradlew运行退出时:
Task :run
Error: Could not find or load main class hello.Greeting
Greeting.java只是一个带有主要方法的简单类:
package main.java.hello;
public class Greeting {
public static void main(String[] args) {
System.out.println("greet");
}
}
答
在Java文件中删除从包定义主要还是 删除您的不一致SourceSet定义或将其更改为
sourceSets {
main {
java {
exclude 'some/unwanted/package/**'
}
}
}
答
需指定正确sourceSet结构
必须参考源的一个设置
我改变了我的目录结构,但这并不是必要的,如果应用以下规则。
src
└── hello
└── main
└── java
└── Greeting.java
sourceSets {
hello{
main {
java {
srcDir 'src/hello/main/java'
}
}
}
}
注意,路径必须是相同的源组构成。
定义主类名:
mainClassName='hello.main.java.Greeting'
但也可以是这样的:
mainClassName='hello.main.java.x.y.Greeting'
,如果我们要添加一些文件夹到包裹。
+0
这是错误的。你只需要解决我的答案中解释的包名。 – adarshr
您能向我们展示您的主类(Greeting.java)源代码吗? – adarshr
我怀疑你的java构建路径。杰尔没有认出你的主班。 ? –
@adarshr我更新了我的问题以显示主要课程。 – wedran