2015-06-01 11 views
8

Provengo da uno sfondo c. Quindi sono estremamente nuovo. In c quando ho usato per costruire il mio codice, i blocchi di codice usati per creare un file .exe per me. Ora sto programmando in scala. Ho letto online che è possibile creare un file jar dal codice scala che potrebbe essere eseguito dal cli. Tutti hanno scritto è il seguente codice. Come posso creare un file jar da esso? Sto usando sbt 0.13.7.Come creare un file jar da scala

object Main extends App { 
    println("Hello World from Scala!") 
} 

risposta

11

Per essere in grado di eseguire complesse attività di compilazione con Scala, è necessario utilizzare SBT come strumento di creazione: è una scala di default per la creazione di pacchetti di applicazioni. Per aggiungere il supporto SBT al progetto, basta creare un file build.sbt nella cartella principale:

name := "hello-world" 

version := "1.0" 

scalaVersion := "2.11.6" 

mainClass := Some("com.example.Hello") 

Per creare un file jar con l'applicazione nel caso in cui se non si hanno dipendenze esterne, è possibile eseguire sbt package e costruirà un hello-world_2.11_1.0.jar con il tuo codice in modo da poterlo eseguire con java -jar hello-world.jar. Ma sicuramente dovrai includere alcune dipendenze con il tuo codice, almeno a causa di un runtime di Scala.

Utilizzare il plug-in sbt-assembly per creare un contenitore di grassi con tutte le dipendenze. Per installarlo, aggiungere una riga

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0") 

al file project/plugins.sbt (e crearlo se non c'è tale file) ed eseguire sbt assembly operazione dalla console.

+1

cosa scrivere nel file build.sbt? –

+0

@ eddard.stark nulla, questa è una dipendenza di compilazione, non una dipendenza di runtime. – dcastro

+0

Mi sta dando un avvertimento senza classi principali. È un problema? –

9

Oltre a sbt, prendere in considerazione anche questa riga di comando semplice,

scalac hello.scala -d hello.jar 

che crea il file jar. Eseguire con

scala hello.jar 

Anche possibile è quella di scrittura del codice sorgente con l'aggiunta di questa intestazione

#!/bin/sh 
exec scala -savecompiled "$0" "[email protected]" 
!# 

e chiamando il metodo principale con Main.main(args) (nota chmod +x hello.sh per rendere il file eseguibile). Qui savecompiled creerà un file jar sulla prima chiamata.