【问题标题】:Can't find Main when executing a Java class from Gradle从 Gradle 执行 Java 类时找不到 Main
【发布时间】:2017-07-05 17:00:15
【问题描述】:

我一直在尝试从 Gradle 运行 java main,但是 Gradle 一直给我错误

任务 ':myTask' 执行失败

没有指定主类

我已经附上了下面的代码

sourceSets {
    main {
        java {
            srcDirs 'src/myPackage/downloadupdater'
            srcDirs 'src/myPackage/downloadupdater/util' 
            srcDirs 'src/myPackage/downloadupdater/dao'
        }
        // output.classesDir = "/bin"
    }
}

task myTask(dependsOn : compileJava, type : JavaExec){
    group = "Custom"
    description = "Acquires the weekly stats"

    doLast{
        classpath = sourceSets.main.output.classesDir
        main = "myPackage.SomeClass"
        args "-w"
    }
}

我调用的java类是:

package myPackage
public class SomeClass{

    private static DownloadUpdater updater;

    public static void main (String [] args) {

        updater = new DownloadUpdater();
    
        updater.whichStatistics(args[0]);
    
        updater.setCalendar();
    
        updater.secureWorkbook();
    
        updater.getStatistics();

    }
}

构建后,我的目录出现了一个 build-classes-java-main-myPackage 但 gradle 仍然找不到主类。

【问题讨论】:

    标签: java gradle


    【解决方案1】:

    将 java 源文件移动到 src/main/java 而不仅仅是 src。或者设置

    sourceSet properly
    sourceSets.main.java.srcDirs = ['src'] 
    

    并使用

    task execute(type:JavaExec) {
    main = "myPackage.SomeClass"
    classpath = sourceSets.main.runtimeClasspath
    }
    

    更多参考:Gradle to execute Java class (without modifying build.gradle)

    【讨论】:

    • 意识到我的错误,我在 doLast 块中设置了主路径和类路径,当尝试将任务配置为 Java 可执行文件时抛出错误。一旦移出 doLast 块并允许在配置阶段运行,一切都解决了。谢谢!
    • 错误:(38, 1) 评估根项目“MyProject”时出现问题。 > 无法为 org.gradle.api.tasks.JavaExec 类型的任务 ':execute' 获取未知属性 'sourceSets'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多