如何在gradle生成的startScript中修复类路径

时间:2019-05-14 22:22:11

标签: gradle

我正在构建一个简单的应用程序,该应用程序可以使用gradle包装器很好地启动。

现在,我想使用Shell脚本启动它。我正在尝试使用Application插件提供的gradle startScripts任务来生成这样的脚本。

这是我尝试的命令:

n@laptop - ./gradlew clean build
BUILD SUCCESSFUL in 1s
9 actionable tasks: 9 executed

n@laptop - ./build/scripts/simple
Error: Could not find or load main class Main
Caused by: java.lang.ClassNotFoundException: Main

这是我的build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'application'

repositories {
    mavenCentral()
}

sourceCompatibility = 1.11
targetCompatibility = 1.11

application {
    mainClassName = 'Main'
}

dependencies {
    compile("org.apache.commons:commons-io:1.3.2")
    compile("org.apache.commons:commons-io:1.3.2")
    compile("javax.validation:validation-api:2.0.0.Final")
    compile("com.fasterxml.jackson.core:jackson-annotations:2.2.1")
    compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.8")
    compile("org.hibernate:hibernate-validator:6.0.16.Final")
    compile("javax.el:javax.el-api:3.0.0")
    compile("org.glassfish:javax.el:3.0.0")
    compile("com.beust:jcommander:1.72")

    testCompile ("junit:junit:4.12")

    compileOnly "org.projectlombok:lombok:1.18.8"

    annotationProcessor 'org.projectlombok:lombok:1.18.8'
}

1 个答案:

答案 0 :(得分:1)

您不能直接从Gradle的build目录中运行生成的脚本。该脚本仅在此处生成,但打算用作build/distributions/下已构建的发行档案之一的一部分。例如(假设您的项目名为simple,而我们在Unix系统上):

# create a directory where we will install the built ZIP distribution
mkdir installdir
# unzip the ZIP distribution to the new install directory
unzip build/distributions/simple.zip -d installdir
# run the application using the generated script from the distribution
installdir/simple/bin/simple

作为参考,以下是您的构建的安装目录(在bin目录中具有生成的启动脚本):

installdir/simple/
├── bin
│   ├── simple
│   └── simple.bat
└── lib
    ├── classmate-1.3.4.jar
    ├── commons-io-1.3.2.jar
    ├── simple.jar
    ├── hibernate-validator-6.0.16.Final.jar
    ├── jackson-annotations-2.9.0.jar
    ├── jackson-core-2.9.8.jar
    ├── jackson-databind-2.9.8.jar
    ├── jackson-datatype-jsr310-2.9.8.jar
    ├── javax.el-3.0.0.jar
    ├── javax.el-api-3.0.0.jar
    ├── jboss-logging-3.3.2.Final.jar
    ├── jcommander-1.72.jar
    └── validation-api-2.0.1.Final.jar

或者,您可以使用应用程序插件的the run task从Gradle直接运行程序:

./gradlew run