我试图用gradlew运行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 build,但./gradlew运行退出:
Task :run
Error: Could not find or load main class hello.Greeting
Greeting.java只是一个带有main方法的简单类:
package main.java.hello;
public class Greeting {
public static void main(String[] args) {
System.out.println("greet");
}
}
答案 0 :(得分:0)
您的包裹不正确。将其更改为package hello;
即可。
src/main/java
是源文件夹,它不是包的一部分。
答案 1 :(得分:0)
从java文件中的包定义中删除main或 删除不一致的SourceSet定义或将其更改为
sourceSets {
main {
java {
exclude 'some/unwanted/package/**'
}
}
}
答案 2 :(得分:0)
我更改了目录结构,但如果应用以下规则则不需要这样做。
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'
,如果我们希望在包中添加一些文件夹。