web-dev-qa-db-ja.com

ScalaでJTDSを使用するとサポートされていないバージョンエラーが発生する

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
      }
    }
  }
  • 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、混合モード)

22
stan

はい、あなたのJavaランタイムは古すぎます Javaクラスファイル形式)によると

  • J2SE 7 =51(0x33 hex)、
  • J2SE 6.0 = 50(0x32 hex)、
  • J2SE 5.0 = 49(0x31 hex)、
  • JDK 1.4 = 48(0x30 hex)、
  • JDK 1.3 = 47(0x2F hex)、
  • JDK 1.2 = 46(16進数の0x2E)、
  • JDK 1.1 = 45(0x2D hex)。

51.0は、プロジェクトでいくつかのクラスを実行するためにJava 7が必要であることを意味します。そして、問題の原因はjTDSです(- jTDS JDBCから)ドライバー1.2.7および1.3.0がリリースされました ):

バージョン1.3.0は、ドライバの最初のJava 7互換バージョンであり、

Java 7(常に良いアイデア)にアップグレードするか、古いjTDSドライバにダウングレードしてください。

40

リリースノート から:

Javaより前のバージョンJava 7.を使用する必要がある場合にのみ、ドライバのjTDS 1.2.x行に固執する必要があります。

10