Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#1

Fehlermeldung bei Verwendung von InterClient 7.5.1 mit Java 8

  Alt 26. Jan 2015, 13:32
Datenbank: InterBase • Version: 7.5.1 • Zugriff über: JDBC
Hallo,

setzt noch jemand InterBase 7.5.1 ein und greift darauf auch über den InterClient JDBC Treiber zu?

Mit Java 8 scheint der InterClient 7.5.1 Treiber nicht mehr kompatibel zu sein, beim Verbindungsversuch erfolgt eine Exception:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: sun/io/ByteToCharConverter
   at interbase.interclient.Connection.connect(Unknown Source)
   at interbase.interclient.Connection.<init>(Unknown Source)
   at interbase.interclient.Driver.connect(Unknown Source)
   at java.sql.DriverManager.getConnection(DriverManager.java:664)
   at java.sql.DriverManager.getConnection(DriverManager.java:247)
   at com.example.so25365952.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter
   at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   ... 6 more
Die vermisste Klasse sun/io/ByteToCharConverter gehört zu den "interne" Sun-Klassen. In Java 7 ar sie als deprecated gekennzeichnet, in Java 8 nun wurde sie entfernt. (Eine interne Klasse zu verwenden ist schlechter Stil, da sie nicht Teil der offiziellen Java API sind, und die Anwendung an eine spezifische JRE binden, in diesem Fall die von Sun).

Da Oracle den Java 7 Support im April einstellen wird, wird eine Entscheidung notwendig sein:
  • den InterBase 7.5.1 Server auf XE umstellen?
  • den Datenbankzugriff von JDBC auf etwas anderes umstellen?

Die erste Option würde sehr, sehr teuer werden. Die zweite würde den Einsatz einer anderen Zugriffsmethode (ODBC über Java?) erfordern und auch einigen Aufwand bedeuten. Daher wären praktikable Ideen willkommen
Michael Justin

Geändert von mjustin (26. Jan 2015 um 13:35 Uhr)
  Mit Zitat antworten Zitat