2017-08-13 5 views
0

J'ai une application javafx qui fonctionnait correctement avec proguard.DIfficulté dans l'application javafx de proguard

Cependant, après avoir ajouté Xérial-sqlite à ma demande, proguard fonctionne toujours très bien que je rencontre cependant l'erreur suivante lors de l'exécution en utilisant la java jar program.jar commande:

18:31:42,161 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [dailyRollingFileAppender] to Logger[ROOT] 
18:31:42,161 |-INFO in k.a - End of configuration. 
18:31:42,161 |-INFO in [email protected] - Registering current configuration as safe fallback point 
2017-Aug-13 18:31:42.287 [JavaFX Application Thread] ERROR B.c - No suitable driver found for jdbc:sqlite:merchant.db 
java.sql.SQLException: No suitable driver found for jdbc:sqlite:merchant.db 
    at java.sql.DriverManager.getConnection(DriverManager.java:689) 
    at java.sql.DriverManager.getConnection(DriverManager.java:270) 
    at B.e.<init>(SQLiteDataSource.java:52) 
    at B.e.a(SQLiteDataSource.java:61) 
    at com.datasoft.pay365.merchant.MainApp.start(MainApp.java:94) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) 
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139) 
    at java.lang.Thread.run(Thread.java:748) 

instanciation du sqlite connexion:

protected SQLiteDataSource() { 
     connection = null; 
     try { 
      connection = DriverManager.getConnection("jdbc:sqlite:merchant.db"); 
      this.createTable(); 
     } catch (SQLException e) { 
      logger.error(e.getLocalizedMessage()); 
      e.printStackTrace(); 
     } 
    } 

J'ai vraiment besoin de pouvoir exécuter cette version sqlite de mon application. Comment puis-je le résoudre?

Répondre

0

Avez-vous chargé le pilote en utilisant le chargeur de classe actuel?

Class.forName("org.sqlite.JDBC"); 

Si oui, sont vos pots de bibliothèque inclus dans votre appel java ou dans le même dossier que votre pot de JavaFX ou customly classloaded être accessible par votre code principal?

+0

Non, j'utilise [cette bibliothèque] (https://github.com/xerial/sqlite-jdbc) ici. Lors de l'ajout du fichier jlbc jar sqlite dans le même dossier, il semble fonctionner. Puisque la bibliothèque gère le 'Class.forName (" org.sqlite.JDBC ");' je n'ai pas fait un tel appel. Il n'a pas été chargé de manière personnalisée non plus (à part le fait que j'utilise maven, si ça aide). Je pourrais sembler inexpérimenté et je le suis. Pouvez-vous suggérer comment résoudre ces problèmes? – sbs