【问题标题】:Gradle fails when executes run task for scala执行 scala 的运行任务时 Gradle 失败
【发布时间】:2016-08-30 22:31:35
【问题描述】:

我创建了一个 HelloWorld 应用程序,我能够执行 build 任务但无法执行 run 任务。 我收到以下错误:

找不到或无法加载主类Demo

以下是我的 build.gradle 文件:

apply plugin: 'scala'
repositories{
    mavenCentral()
    mavenLocal()
}
dependencies{
    compile 'org.slf4j:slf4j-api:1.7.5'
    compile "org.scala-lang:scala-library:2.11.2"
    testCompile "junit:junit:4.11"
}
task run(type: JavaExec, dependsOn: classes) {
    main = 'Demo'
}

我的源代码Demo.scala

object Demo {
   def main(args: Array[String]) {
        println("Helo World")
   }
}

我的文件结构:

build
src\main\scala\Demo.scala
build.gradle

我正在使用 gradle 3.0 和 Java 1.8.0_91。 在我看来,我缺少一些与 classpath 相关的设置。 任何帮助将不胜感激。

【问题讨论】:

    标签: scala gradle


    【解决方案1】:

    您还需要提供classpath。将run 任务声明更改为:

    task run(type: JavaExec, dependsOn: classes) {
       main = 'Demo'
       classpath = sourceSets.main.runtimeClasspath
    }
    

    它会正常工作。 Demo.

    打印类路径:

    task run(type: JavaExec, dependsOn: classes) {
        main = 'Demo'
        classpath = sourceSets.main.runtimeClasspath
        doFirst {
          classpath.each { println it }
        }
    }
    

    【讨论】:

    • 谢谢!有用。在这种情况下如何从 gradle 打印类路径的任何想法。如果我这样做 println(classpath) 它会打印“文件集合”。换句话说,我正在尝试进行简单的调试。
    • @Mika16,要打印类路径,请参阅我更新的答案。
    • 谢谢,它有效。看起来我可以跳过 doFirst {} 并把 classpath.each { println it }
    【解决方案2】:

    您可以使用 Gradle 应用程序插件,它会自动添加运行任务。然后简单地指定主类:

    mainClassName = "Demo"
    

    你的 build.gradle 将如下所示:

    apply plugin: 'scala'
    apply plugin: 'application'
    repositories{
        mavenCentral()
        mavenLocal()
    }
    dependencies{
        compile 'org.slf4j:slf4j-api:1.7.5'
        compile "org.scala-lang:scala-library:2.11.2"
        testCompile "junit:junit:4.11"
    }
    
    
    mainClassName = 'Demo'
    

    【讨论】:

    • 它不起作用。在这种情况下,我得到“无法设置未知属性 mainClassName”。
    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2021-08-07
    • 2021-08-21
    • 2020-03-16
    相关资源
    最近更新 更多