如何从命令行在Java Gradle项目中运行主要方法?

时间:2018-09-18 18:14:31

标签: java exception gradle command-line main-method

我有一个Gradle项目(例如MyProject),它有一个主要方法,我只想使用它来运行一个小型Java应用程序。说,脚本位于类和包中,如下所示:

MyScript.Java

package com.car.ant;

import com.3rdparty.library.LibraryException;

public class MyScript {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

我用$ ./gradlew clean build构建项目,没问题。我正在尝试通过命令行运行此程序,但是当我这样做时,尝试运行时会出现异常:

$ pwd
~/workspace/MyProject/build/classes/java/main
$ java com.car.ant.MyScript
Exception in thread "main" java.lang.NoClassDefFoundError: com/3rdparty/library/exception/LibraryException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        ... 7 more

该脚本不是应用程序的主要部分,但我只是希望其中的脚本每隔一段时间运行一次,并且我想弄清楚如何通过命令行本身运行它。有没有一种方法,而无需导入更多库?我已经看到使用一罐进行此操作,但是我认为不用一罐即可完成此操作。

更新:

在尝试阅读this之后尝试添加类路径,但是现在我遇到了另一个错误:

$ java -cp com/3rdparty/library/exception/LibraryException com.car.ant.MyScript
Error: Could not find or load main class com.car.ant.MyScript

2 个答案:

答案 0 :(得分:1)

您可以在the Gradle Docs上了解如何执行此操作。

pip install matplotlib  #add "sudo" before "pip" when you get "Permission denied"
pip install numpy

然后只需使用enter code here 来运行您的应用程序。

另一个好处是,此插件可帮助您打包应用以进行分发。为此,请使用apply plugin: 'application' mainClassName = "com.mycompany.myapplication.MyScript" applicationDefaultJvmArgs = [ "-Djava.util.logging.config.file=src/main/resources/logging.properties" ] 命令。

答案 1 :(得分:1)

尝试一下。

    plugins {
    id 'java-library'
    id 'application'
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
/*
sourceCompatibility is "Java version compatibility to use when compiling Java source." 
targetCompatibility is "Java version to generate classes for."
*/
repositories {
    jcenter()
}
dependencies {
}


//To run the class name from command line using gradle run
mainClassName = 'com.sam.home.HelloWorld'

//To create a runnable jar  in GradleJavaProject\build\libs then java -jar GradleJavaProject.jar
jar {
    manifest {
        attributes 'Main-Class': 'com.sam.home.HelloWorld'
    }
}
//Beyond this line evertyhing is optional
//Alternatively you can run it as a task too gradle -q  runWithJavaExec
task runWithJavaExec(type: JavaExec) {
    group = "Execution"
    description = "Run the main class with JavaExecTask"
    classpath = sourceSets.main.runtimeClasspath
    main = 'com.sam.home.HelloWorld'
}
wrapper {
gradleVersion = '5.5'
distributionType = Wrapper.DistributionType.BIN
}

在命令行中输入gradle run或gradle -q runWithJavaExec