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

sta*_*tan 22 java scala jtds spray

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

java.lang.UnsupportedClassVersionError:net/sourceforge/jtds/jdbcx/JtdsDataSource:不支持的major.minor版本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
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)
  • Scala版本:2.9.2
  • Java版本:1.6
  • 使用jtds 1.3.0
  • 输出java -version:

java版"1.6.0_35"Java(TM)SE运行时环境(版本1.6.0_35-b10-428-11M3811)Java HotSpot(TM)64位服务器VM(版本20.10-b01-428,混合模式)

Tom*_*icz 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 Driver 1.2.7和1.3.0发布):

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

升级到Java 7(总是一个好主意)或降级到一些旧的jTDS驱动程序.


a_h*_*ame 10

发行说明:

如果您需要在Java 7之前使用Java版本,则应该只遵循驱动程序的jTDS 1.2.x行.