【问题标题】:How to compile scala into runnable jar file如何将scala编译成可运行的jar文件
【发布时间】:2015-10-23 17:21:54
【问题描述】:

我没有找到在 Linux 中编译 scala 的好方法,所以我尝试了以下命令,

mkdir runnablescala
cd runnablescala
mkdir -p src/main/scala
mkdir -p src/main/resources
mkdir -p src/test/scala
mkdir -p src/test/resources
cd src/main/scala
mkdir -p com/johnathanmarksmith/gradle
vi com/johnathanmarksmith/gradle/HelloWorld.scala

package com.johnathanmarksmith.gradle;
 object HelloWorld {
    def main(args: Array[String]) {
      println("Hello, world!")
    }
  }

cd ../../..
vi build.gradle

apply plugin: 'scala' 

 jar { 
        baseName = 'smith' 
        version = '1.0' 
        manifest { 
                     attributes 'Main-Class': 'com.johnathanmarksmith.gradle.HelloWorld' } 
     }
gradle build

构建失败并显示此结果

:compileJava UP-TO-DATE
:compileScala FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileScala'.
> 'compileScala.scalaClasspath' must not be empty

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

谁能告诉我如何编译scala?谢谢!我需要任何其他插件或其他东西吗?

【问题讨论】:

  • 你的意思是专门使用 Gradle 吗?如果是,您应该添加 gradle 标签。如果不是,SBT 通常是最容易起步的。
  • 我冒昧地更改了标签,因为这是 Gradle 错误,而不是编译器错误。
  • @RexKerr 有没有使用 sbt 编译 scala 代码的教程?我以前从未使用过它。谢谢!
  • @GavinNiu - scala-sbt.org/documentation.html 是一个来源。如果您只想编译一个文件,scala-sbt.org/0.13/tutorial/Hello.html 就是一个例子。如果你想在类路径上构建一个包含所有需要的 jar 文件(然后是一些——它不是为了优化,只是为了方便),搜索程序集插件。

标签: scala gradle


【解决方案1】:

https://docs.gradle.org/current/userguide/scala_plugin.html:

除非明确配置任务的 scalaClasspath,否则 Scala(基础)插件将尝试从任务的类路径推断它。这样做如下:

如果在 classpath 中找到 scala-library Jar,并且该项目至少声明了一个存储库,则会将相应的 scala-compiler 存储库依赖项添加到 scalaClasspath。

否则,任务的执行将失败,并显示无法推断 scalaClasspath 的消息。

即你需要添加

dependencies {
  compile 'org.scala-lang:scala-library:2.11.7'
}

build.gradle。如果您想构建一个独立的 jar,请参阅Building a uberjar with Gradle

正如 Rex Kerr 提到的,如果您没有使用 Gradle 的特定理由,我会选择 SBT 进行 Scala 项目。

【讨论】:

  • 有没有使用sbt编译scala代码的教程?我以前从未使用过它。谢谢!!
猜你喜欢
  • 2017-08-22
  • 2017-05-10
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多