NoClassDefFoundError soleil/io/ByteToCharConverter avec InterBase pilote JDBC

Avec InterClient 7.5.1 et 8.1.5, la création d'une nouvelle connexion JDBC Java 8 échoue avec

java.lang.NoClassDefFoundError: sun/io/ByteToCharConverter

Cette classe semble être référencés ou utilisé par le InterClient JDBC de la bibliothèque.
L'erreur ne se produit pas avec Java 7. Est-il un moyen pour contourner cette erreur?


Ce code reproduit le problème sur Java 8:

package com.example.so25365952;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {
    interbase.interclient.Connection conn; 

    public static void main(String[] args) {
        try {
            Class.forName("interbase.interclient.Driver");           
            DriverManager.getConnection("jdbc:interbase://localhost/data/mydb.gdb", "sysdba", "password123");           
        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

De sortie:

Exception in thread "main" java.lang.NoClassDefFoundError:
soleil/io/ByteToCharConverter à
interbase.interclient.Connexion.se connecter(Unknown Source) at
interbase.interclient.Connexion.(Source inconnue) à
interbase.interclient.Le pilote.se connecter(Unknown Source) at
java.sql.DriverManager.getConnection(DriverManager.java:664) à
java.sql.DriverManager.getConnection(DriverManager.java:247) à
com.exemple.so25365952.Principal.principale(Main.java:14) Causés par:
java.lang.ClassNotFoundException: le soleil.io.ByteToCharConverter à
java.net.URLClassLoader$1.exécuter(URLClassLoader.java:372) à
java.net.URLClassLoader$1.exécuter(URLClassLoader.java:361) à
java.de sécurité.AccessController.doPrivileged(Native method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:360) à
java.lang.Chargeur de classe.loadClass(ClassLoader.java:424) à
soleil.misc.Lanceur$AppClassLoader.loadClass(Lanceur.java:308) à
java.lang.Chargeur de classe.loadClass(ClassLoader.java:357) ... 6 plus

  • Avez-vous d'inclure ces bibliothèques dans votre déploiement ou sont-ils un module séparé? Le sun.jdk module contient les sun/io chemins.
  • Quelle version de sql jdbc pot que vous utilisez?
  • essayé avec InterClient versions 7.5.1 et 8.1.5. Suggérez-vous que nous devrions essayer une nouvelle InterClient version?
  • Vous êtes en train de dire que vous n'avez même pas essayé la dernière version du pilote? Ça aurait été la première chose à essayer.
  • Connexes: interbase.interclient.UnlicensedComponentException avec la dernière interclient.jar IB (v7.5.80), j'ai vérifié que notre InterBase 7.5.1 sera la cause de ce côté client d'exception avec la version la plus récente de la InterBase pilote JDBC (XE7)
  • la dernière version a un autre problème: il refuse de se connecter à d'anciennes versions du serveur. Je n'ai pas essayé plus tôt parce que je soupçonne quelque chose comme ça arriverait 🙂

InformationsquelleAutor mjn | 2014-08-18