Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74

    errore ClassNotFoundException: org.sqlite.JDBC

    Ho un problema coi driver di sqlite.

    Ho creato un'applicazione in eclipse che funziona perfettamente.
    L'ho esportata in file jar, ma non riesco a farla funzionare.

    Premetto che ho inserito i file:
    safe_password.jar - il jar dell'applicazione
    sqlite-jdbc-3.7.2.jar - i driver sqlite
    test.db - il database

    Quando da terminale scrivo:

    java -cp /home/user/scripts/safe_password_script/sqlite-jdbc-3.7.2.jar -jar safe_password.jar

    mi da errore:
    java.lang.ClassNotFoundException: org.sqlite.JDBC

    Credo sia un problema di classpath, ma glielo ho indicato esplicitamente ed ho fatto altre prove provando a modificare la variabile CLASSPATH o il file MANIFEST.

    Dove sbaglio?

    Grazie!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    No: se hai un file JAR, qualunque indicazione del classpath da riga di comando viene semplicemente ignorata, in quanto l'unico classpath che viene preso in considerazione è quello del file MANIFEST.MF all'interno del file JAR.

    Quindi, o modifichi il file MANIFEST.MF del JAR, oppure inserisci le librerie esattamente dove il JAR si aspetta di trovarle.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74
    Grazie, la cosa che l'indicazione del classpath da riga di comando viene ignorata quando si tratta di file .jar non la conoscevo.

    Comunque ho risolto usando l'opzione di eclipse per creare un file jar eseguibile che mi ha inglobato automaticamente i driver jdbc.

    Però ipotizzando volessi farlo automaticamente come dovrei fare?
    Cioè, se ho nella stessa directory:
    - file jar dell'applicazione
    - file jar dei driver jdbc

    Cosa dovrei andare a scrivere nel file manifest?
    Una cosa del tipo

    Class-Path: ././file_driver_jdbc.jar?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Generalmente è preferibile mantenere le librerie dell'applicazione in una directory (solitamente chiamata "lib") all'interno della root dell'applicazione. Schematicamente:

    codice:
    Root dell'applicazione
    +-- lib
        +-- Libreria1.jar
        +-- Libreria2.jar
        +-- ...
    +-- Jar dell'applicazione
    In questo modo, nel MANIFEST dovrai semplicemente indicare le librerie dell'applicazione in questo modo:

    codice:
    Class-Path: lib/Libreria1.jar lib/Libreria2.jar ...
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74
    Grazie mille!

  6. #6
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74
    Ho notato un nuovo problema.

    Se eseguo l'applicazione da riga di comando/eclipse non ho nessunissimo problema, però se creo un lanciatore sulla barra delle applicazioni e lo avvio, il programma parte ma poi non prende nessun evento previsto dal programma.

    Ci potrebbe essere qualche problema anche qui col path?

    EDIT: ho risolto.

    Ho creato uno script contenente:

    #!/bin/bash
    cd /home/user/scripts/safe_password_script/
    java -jar safe_password.jar

    L'ho salvato e gli ho dato i permessi di esecuzione.

    Ho quindi creato un file lanciatore contente:

    [Desktop Entry]
    Encoding=UTF-8
    Version=1.0
    Type=Application
    Terminal=false
    Icon[it_IT]=gnome-panel-launcher
    Name[it_IT]=safe_password_script
    Exec=/home/user/lanciatore.h
    Comment[it_IT]=lanciatore safe_password_script
    Icon=gnome-panel-launcher

    sul desktop. Cambiato anche qui i permessi di esecuzione ed ora va isi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.