2012-11-15 10 views
22

Próbuję użyć sterownika JTDS Java, aby połączyć się z moją bazą danych w Scala. Jednak za każdym razem, gdy próbuję go użyć, pojawia się błąd, że wersja (java?) Jest niepoprawna.Nieobsługiwana wersja błędu przy użyciu JTDS ze Scala

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 wersja: 2.9.2
  • Java Version: 1.6
  • Korzystanie jtds 1.3.0
  • Wyjście java -version: wersja

java "1.6.0_35" Środowisko wykonawcze Java (TM) SE (wersja 1.6.0_35-b10-428-11M3811) Java HotSpot (TM) 64-bitowy serwer VM (build 20.10-b01-428, tryb mieszany)

Odpowiedz

40

Tak, wykonawcze Java jest zbyt stary, według Java class file format:

  • J2SE 7 = (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 on x),
  • JDK 1.2 = 46 (0x2E hex),
  • JDK 1.1 = 45 (0x2D hex).

51.0 oznacza, że ​​do wykonywania niektórych klas w projekcie potrzebny jest Java 7. I masz rację, że to jTDS który jest przyczyną problemu (od jTDS JDBC Driver 1.2.7 and 1.3.0 released):

Version 1.3.0 is the first Java 7 compatible version of the driver and

Albo uaktualnić do Java 7 (zawsze dobrym pomysłem) lub downgrade do pewnego starszego kierowcę jTDS.

+1

Scala nadal nie jest w 100% kompatybilny z JDK7, więc będę trzymać się starszego kierowcę do teraz. Dzięki! –

10

Z release notes:

You should only stick to the jTDS 1.2.x line of the driver if you require to use Java versions prior to Java 7.

Powiązane problemy