我正在尝试编译(使用gradle)并执行(使用java 1.8运行时)一个小的groovy程序(请参阅下面的 helloWorld.groovy )。
但是当我尝试调用它时,我得到错误:无法找到或加载主类helloWorld
我错过了什么?
编译:
lexu> gradle clean jar
:clean
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
BUILD SUCCESSFUL
Total time: 0.555 secs
执行:
lexu> java -jar ./build/libs/helloWorld.jar
Error: Could not find or load main class helloWorld
helloWorld.groovy:
class helloWorld {
static void main(String[] args) {
println('Hello World');
}
}
的build.gradle:
apply plugin: 'groovy'
apply plugin: 'application'
mainClassName = "helloWorld"
archivesBaseName = 'helloWorld';
configurations {provided; inlib;}
repositories {mavenCentral()}
dependencies {compile 'org.codehaus.groovy:groovy-all:2.4.7'}
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'helloWorld'
)
}
}
答案 0 :(得分:1)
您的设置存在一些问题。
没有破坏,但值得一提的是:Convention声明你的文件名和类应该是大写的: HelloWorld.groovy
gradle
假设您的源文件位于src/main/java
或src/main/groovy
下。您可以根据自己的偏好使用gradle groovy plugin - project layout
sourceSets {
main {
groovy {
srcDirs = ['src/groovy']
}
}
}
groovy
的所有运行时依赖项。为此,我们使用名为uberjar
的扩展任务。<强>的build.gradle 强>:
apply plugin: 'groovy'
apply plugin: 'application'
mainClassName = "HelloWorld"
archivesBaseName = 'HelloWorld';
configurations {provided; inlib;}
repositories {mavenCentral()}
dependencies {compile 'org.codehaus.groovy:groovy-all:2.4.7'}
task uberjar(type: Jar,dependsOn:[':compileJava',':compileGroovy']) {
from files(sourceSets.main.output.classesDir)
from configurations.runtime.asFileTree.files.collect { zipTree(it) }
manifest {
attributes 'Main-Class': mainClassName
}
}
<强> HelloWorld.groovy 强>:
class HelloWorld {
static void main(String[] args) {
println('Hello World');
}
}