2014-07-05 13 views
5

Sono nuovo di Scala e non ho mai scritto o compilato un programma in esso prima. Sto cercando di eseguire semplicemente il seguente esempio Ciao Mondo, che ho salvato in un nome di file scalaApp.scalaCome compilare l'applicazione Scala Hello World

object scalaApp extends App { 
    def main(args: Array[String]) { 
     println("Hello, world!") 
    } 
} 

Quando vado il terminale nella directory e digitare "scalac scalaApp.scala" del file, ho il seguente messaggio di errore:

scalaApp.scala:4: error: overriding method main in trait App of type (args: Array[String])Unit; 
method main needs `override' modifier 
    def main(args: Array[String]) { 
     ^
one error found 

ho pensato di seguito tutte le istruzioni per installare Scala 2.10.3 modo corretto sul computer, ma non so come eseguire il test da quando non riesco nemmeno a compilare questo semplice programma Se digito "scala" nel terminale, ricevo un prompt scala su cui posso eseguire comandi come "1 + 1". Non sono sicuro di quanto questo mostri. Ho aggiunto la variabile SCALA_HOME a ~/.profile e aggiunto SCALA_HOME alla variabile PATH in ~/.profile. Se qualcuno potesse dirmi che cosa sto sbagliando, o darmi un suggerimento su dove posso trovare una risposta, lo apprezzerei.

risposta

11

Dal App extends DelayedInit, non si dovrebbe definire una funzione main

Questo dovrebbe essere sufficiente:

object scalaApp extends App { 
    println("Hello, world!") 
} 

Il compilatore crea questa funzione per voi, e vi passarlo al metodo delayedInit(x: => Unit) (notare la call-by-name in the parameter).

Il compilatore emetterà:

object Main extends DelayedInit { 
    def delayedInit(x: => Unit = { println("Hello, worl!") }) = // impl is left for us to fill in 
} 
+0

Grazie, che ha fatto. La pagina web di cui ho ricevuto il codice errato era http://www.scala-lang.org/documentation/getting-started.html. Il codice era corretto solo per una versione precedente di Scala? È un po 'scoraggiante avere così tanti problemi nel trovare un semplice esempio che doveva semplicemente testare l'installazione. –

+3

@StevenEdmunds Non vedo il tuo codice iniziale in quella pagina. O non estendi l'app, e hai una funzione 'main', o estendi' App', e non hai una funzione 'main'. Entrambi i casi sono illustrati nella pagina di riferimento. – VonC

+0

Sì, hai ragione, stavo incollando il contenuto dell'oggetto nel modello di applicazione scala creato dall'IDE di Eclipse e non ho notato la differenza. Penso di essere troppo impaziente e frustrato quando faccio cose come la configurazione e la configurazione degli ambienti, e comincio a diventare sciatto e trascurare le cose. Apprezzo che tu abbia trovato il tempo per raddrizzarmi su tutto questo. –

0

Quando si compila un file .jar, ho incontrato l'errore.

spark-submit-2.2 sequential-assembly-1.0.0-SNAPHOST.jar 
Error: No main class set in JAR; please specify one with --class 

Poi ho allegato il mio codice di

object getdata{ 

    def main(args: Array[String])={ 
     println("Hello World") 

    } 
} 
+0

bash-4.2 $ spark-submit-2.2 sequential-assembly-1.0.0-SNAPHOST.jar Hello World bash-4.2 $ –