使用JTDS和Scala时出现不支持的版本错误

22

我正在尝试在Scala中使用Java JTDS驱动程序连接到数据库。但是,每当我尝试使用它时,都会出现错误,显示版本(Java的版本?)不正确。

java.lang.UnsupportedClassVersionError: net/sourceforge/jtds/jdbcx/JtdsDataSource : Unsupported major.minor version 51.0

object DaoDriverAdaptor {
  import java.sql.{DriverManager, Connection}

  private def loadDriver() {
    try {
      Class.forName("net.sourceforge.jtds.jdbcx.JtdsDataSource")
    } catch {
      case e: Exception  => {
        println("ERROR: Driver not available: " + e.getMessage)
        throw e
      }
    }
  }
  • Scala版本:2.9.2
  • Java版本:1.6
  • 使用jtds 1.3.0
  • java -version的输出如下:

java version "1.6.0_35" Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

2个回答

40

是的,根据Java类文件格式,你的Java运行时版本太旧了:

  • J2SE 7 = 51 (0x33十六进制),
  • J2SE 6.0 = 50 (0x32十六进制),
  • J2SE 5.0 = 49 (0x31十六进制),
  • JDK 1.4 = 48 (0x30十六进制),
  • JDK 1.3 = 47 (0x2F十六进制),
  • JDK 1.2 = 46 (0x2E十六进制),
  • JDK 1.1 = 45 (0x2D十六进制)。

51.0意味着您需要Java 7来运行项目中的某些类。你是正确的,问题出在jTDS上(来自jTDS JDBC驱动程序1.2.7和1.3.0发布):

 

版本1.3.0是该驱动程序的第一个与Java 7兼容的版本

要么升级到Java 7(总是一个好主意),要么降级到旧版jTDS驱动程序。


1
Scala仍然不完全兼容JDK7,所以我现在会坚持使用旧的驱动程序。谢谢! - stan

10

发布说明中得知:

如果你需要使用早于Java 7的Java版本,则应仅使用jTDS 1.2.x系列驱动程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接