10
votes

Le programme fonctionne lorsque vous exécutez SCALA, obtenez des erreurs compatibles lorsque vous essayez de le compiler avec SCALAC

Je teste le code ci-dessous, une section de base de données de base. Cela fonctionne bien lorsque je l'exécute à partir de la CLI en utilisant "scala dbtest.scala", mais me donne des erreurs compilées lorsque j'essaie de le compiler avec SCALAC:


import java.sql.{Connection, DriverManager, ResultSet};
import java.util.Date

// Change to Your Database Config
val conn_str = "jdbc:mysql://localhost:3306/svn?user=xx&password=xx"

// Load the driver
classOf[com.mysql.jdbc.Driver]

// Setup the connection
val conn = DriverManager.getConnection(conn_str)
try {
    // Configure to be Read Only
    val statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)

    // Execute Query
    val rs = statement.executeQuery("SELECT * FROM backup")

    // Iterate Over ResultSet
    var svnFiles = Set[String]()
    while (rs.next) {
        val repos = rs.getString("repos")
        val lm = rs.getDate("lastModified")
        val lb = rs.getDate("lastBackedup")
        if (lm.getTime() > lb.getTime()) {
          println(repos + " needs backing up")
          svnFiles += repos
        }
        else {
          println(repos + " doesn't need backing up")
        }
    }
    println(svnFiles)
}
finally {
    conn.close
}


0 commentaires

3 Réponses :


14
votes

Vous avez besoin d'une classe, d'un objet ou d'un trait au niveau supérieur pour en faire une source légale de compiler. SCALA L'INTERPRÈTE s'attend à des définitions et expressions, alors que scalac s'attend à ce qui peut se transformer en fichiers Java .Class .


3 commentaires

Ok, mais il est légal d'exécuter le code comme je l'ai comme un script via la ligne de commande Scala? Ça marche de la CLI


Oui, en tant que script, SCALA ne nécessite pas de conteneur de niveau supérieur.


En outre, rappel de scala -help : Toutes les options de scalac (voir Scalac -Help) sont également autorisées. Alors, allez-y et exécutez-le avec quelque chose comme Scala -optimiser dbbest.scala



2
votes
//imports here

object DbTest {
  def main(args: Array[String]) {
  // your code here
  }
}

0 commentaires

1
votes

Créer un fichier appelé helloworld.scala et entrez les éléments suivants:

scala HelloWorld.scala


0 commentaires