我正在测试下面的代码,做一个基本的数据库查询。当我使用“scala dbtest.scala”从CLI运行它时,它工作正常,但是当我尝试使用scalac编译它时,它会给我编译错误:
[sean@ibmp2 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
}
答案 0 :(得分:12)
您需要顶级的类,对象或特征才能使其成为合法的编译源。 scala
解释器期望定义和表达式,而scalac
期望可以变成Java .class
文件。
答案 1 :(得分:2)
//imports here
object DbTest {
def main(args: Array[String]) {
// your code here
}
}
答案 2 :(得分:1)
创建一个名为HelloWorld.scala的文件,然后输入以下内容:
object HelloWorld {
def main(args: Array[String]){
println("Hello World")
}
}
为了编译示例,我们使用Scalac,即Scala编译器。 scalac与大多数编译器一样工作:它将源文件作为参数,可能是一些选项,并生成一个或多个目标文件。它生成的目标文件是标准的Java类文件。
从命令行运行:
scalac HelloWorld.scala
这将在当前目录中生成一些类文件。其中一个将被称为HelloWorld.class,并包含一个可以使用scala命令直接执行的类。
编译完成后,可以使用scala命令运行Scala程序。它的用法与用于运行Java程序的java命令非常相似,并且接受相同的选项。上面的例子可以使用以下命令执行,该命令产生预期的输出:
现在运行:
scala HelloWorld.scala
现在" Hello World",将打印到控制台。
在研究了这个功能后,我发现了一篇文章,详细解释了这一点,并在此处发布了有关SO的信息,以帮助程序员理解Scala开发的这一方面。
来源:http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html