我试图编译(与gradle产出)和执行(与Java运行时1.8),一个小常规程序(见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'
)
}
}
您的设置有几个问题。
不会破损,但在这里值得一提:约定指出您的文件名和类应为大写:HelloWorld.groovy
gradle
假设您的源文件位于src/main/java
或在这种情况下,src/main/groovy
。您可以根据自己的喜好与它配置的Gradle Groovy插件-项目布局:
sourceSets {
main {
groovy {
srcDirs = ['src/groovy']
}
}
}
groovy
在jar归档文件中包含所有运行时依赖项。对于这一点,让我们使用使用一种称为扩展任务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');
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句