使用带有 Scala 的 JTDS 时出现不受支持的版本错误

2022-09-02 00:35:29

我正在尝试使用Java JTDS驱动程序连接到Scala中的数据库。但是,每当我尝试使用它时,我都会收到一个错误,即版本(java?)是错误的。

java.lang.UnsupportedClassVersionError: net/sourceforge/jtds/jdbcx/JtdsDataSource : Unsupport 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 版本 “1.6.0_35” Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64 位 Server VM (build 20.10-b01-428, 混合模式)


答案 1

是的,根据 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驱动程序。


答案 2

发行说明中

如果您需要使用 Java 7 之前的 Java 版本,则只应坚持使用驱动程序的 jTDS 1.2.x 行。


推荐