2011-01-10 10 views
8

私は以下のコードをテストしていますが、基本的なデータベースクエリです。それは私が「スカラ座dbtest.scala」を使用してCLIからそれを実行すると正常に動作しますが、私はscalacでそれをコンパイルしようとすると、私はコンパイルエラーを与える:スカラで実行するとプログラムが動作し、scalacでコンパイルしようとするとコンパイルエラーが発生する

 
[[email protected] pybackup]$ scalac dbtest.scala 
dbtest.scala:5: error: expected class or object definition 
val conn_str = "jdbc:mysql://localhost:3306/svn?user=svn&password=svn" 
^ 
dbtest.scala:8: error: expected class or object definition 
classOf[com.mysql.jdbc.Driver] 
^ 
dbtest.scala:11: error: expected class or object definition 
val conn = DriverManager.getConnection(conn_str) 
^ 
dbtest.scala:12: error: expected class or object definition 
try { 
^ 
four errors found 
 

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 
} 
 

答えて

11

はあなたがいずれかのクラス、オブジェクトを必要とし、それを合法的なコンパイル元にするために最上位レベルの特性を持っていなければなりません。 scalaインタプリタは定義と式を期待していますが、scalacはJava .classファイルに変換されるものを想定しています。

+1

OK、それは、私は、コマンドラインのScalaによるスクリプトのようにそれを持っているように、コードを実行するために、法的ですか?それはCLIから機能します –

+1

はい、スクリプトとして、スカラはトップレベルコンテナを必要としません。 –

+0

また、 '' scala -help'''からのリマインダー: '' 'scalacのすべてのオプション(scalac -help参照)も許されています。' ''だから、 '' 'scala - 最適化dbtest.scala''' – opyate

2
//imports here 

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

HelloWorld.scalaというファイルを作成し、次のように入力します。

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

例をコンパイルするには、我々はscalac、Scalaのコンパイラを使用しています。 scalacはほとんどのコンパイラのように動作します:引数としてソースファイルを取り、いくつかのオプションをとり、1つまたは複数のオブジェクトファイルを生成します。オブジェクトファイルは、標準のJavaクラスファイルです。

コマンドラインから、実行します。

scalac HelloWorld.scala 

これは現在のディレクトリにあるいくつかのクラスファイルを生成します。そのうちの1つはHelloWorld.classと呼ばれ、scalaコマンドを使用して直接実行できるクラスが含まれています。

コンパイルすると、scalaコマンドを使用してScalaプログラムを実行できます。その使用法は、Javaプログラムを実行するために使用されるjavaコマンドと非常によく似ており、同じオプションを受け入れます。今すぐ実行

:上記の例では、期待される出力を生成し、次のコマンドを使用して実行することができ

scala HelloWorld.scala 

今の「Hello World」、コンソールに出力されます。

この機能を研究した後、これについて詳しく説明した記事を見つけて、ここにその情報を掲載して、プログラマがScala開発のこの側面を理解するのを助けてください。

出典:http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html

関連する問題