Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Java & Linux

  1. #1

    Java & Linux

    Salve a tutti,

    questa è la prima volta che mi avventuro nel mondo Java ed ho bisogni di qualche suggerimento per portare avanti un progetto.

    Ho un lettore RFID che al suo interno ha il kernel Linux 3.0, necessito di leggere i dati e scriverli su un DB su SQL Server.

    Il produttore del lettore mi ha fornito le librerie in formato .jar per la parte di lettura RFID; ho scaricato le librerie jdbc da Microsoft per la comunicazione (sempre .jar).

    Ora arrivati a questo punto, mi trovo con il mio file .java in cui importo le librerie:
    es: import com.microsoft.sqlserver.jdbc.*;

    quando vado a compilarlo con il comando

    javac nomeClasse.java

    ricevo l'errore che non riesce a trovare la libreria. Il file .jar si trova nella stessa cartella del file .java e anche scompattando il .jar ricevo lo stesso errore.

    Come posso fare?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chetiserve Visualizza il messaggio
    quando vado a compilarlo con il comando

    javac nomeClasse.java

    ricevo l'errore che non riesce a trovare la libreria. Il file .jar si trova nella stessa cartella del file .java
    Java si basa sul concetto di "classpath", che banalmente è un semplice elenco di directory e/o file .jar in cui la JVM può andare a cercare classi/risorse.
    Quindi devi semplicemente apprendere come impostare il classpath, che vale ed è importante soprattutto se usi i tools del JDK "a mano".

    Quote Originariamente inviata da chetiserve Visualizza il messaggio
    anche scompattando il .jar ricevo lo stesso errore.
    I jar non vanno di norma scompattati, se sono jar dei "binari".

    Casi particolari di jar che ha senso scompattare: quelli contenenti sorgenti o documentazione javadoc (tipici quelli che provengono da repository Maven). Altrimenti è chiaro che con questi non ci fai granché.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Grazie mille per la risposta.

    Utilizzando la guida qui su HTML.it ho capito un po' questo concetto del "classpath", per� ancora non arrivo a soluzione.

    Questo è il codice nel mio file Test.java

    codice:
    import java.sql.*;
    import com.microsoft.sqlserver.jdbc.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    
    public class Test {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) 
        {
            CallableStatement cstmt = null;
            ResultSet rs = null;
            String Connectionurl="jdbc:sqlserver://IP\\SQLINSTANCE;DatabaseName=DBNAME;user=USERNAME;Password=PSW";
            Connection con = null;
            Statement stmt = null;
    
            try {
                 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDataSource");
                        cstmt =  DriverManager.getConnection(Connectionurl).prepareCall("{call INS_TEST(?)}", ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                       // cstmt = con.getConnection().prepareCall("{call INS_TEST(?)}", ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                       cstmt.setInt("num", 4);
    
                boolean results = cstmt.execute();
                int rowsAffected = 0;
    
    
            } catch (Exception ex) {
                Logger.getLogger(Test.class.getName()).log(
                        Level.SEVERE, null, ex);
            } finally {
                if (rs != null) {
                    try {
                        rs.close();
                    } catch (SQLException ex) {
                        Logger.getLogger(Test.class.getName()).log(
                                Level.WARNING, null, ex);
                    }
                }
                if (cstmt != null) {
                    try {
                        cstmt.close();
                    } catch (SQLException ex) {
                        Logger.getLogger(Test.class.getName()).log(
                                Level.WARNING, null, ex);
                    }
                }
            }
        }
    
    }
    nella cartella del file Test.java ho anche il file mssql.jar. Utilizzo il comando:

    javac -cp mssql.jar Test.java e non ricevo nessun errore

    dopo faccio

    java Test e ricevo l'errore che non trova la classe all'interno del .jar

    Cosa devo fare?
    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chetiserve Visualizza il messaggio
    nella cartella del file Test.java ho anche il file mssql.jar. Utilizzo il comando:

    javac -cp mssql.jar Test.java e non ricevo nessun errore

    dopo faccio

    java Test e ricevo l'errore che non trova la classe all'interno del .jar
    java -cp .;mssql.jar Test

    In classpath va anche la directory "corrente" (il "."), quella in cui sei e che contiene Test.class .
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Grazie mille per l'aiuto, però ancora non funziona.

    La prima volta ricevevo "Permesso negato". Ho cambiato i privilegi con chmod ma ora ricevo l'errore "mssql.jar: comando non trovato".

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chetiserve Visualizza il messaggio
    Grazie mille per l'aiuto, però ancora non funziona.

    La prima volta ricevevo "Permesso negato". Ho cambiato i privilegi con chmod ma ora ricevo l'errore "mssql.jar: comando non trovato".
    Sei su Linux, quindi, giusto? Sui Unix/Linux il separatore nel classpath è ":" (su Windows è ";" )

    Quindi:

    java -cp .:mssql.jar Test
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Perfetto! Ora funziona! Grazie mille per i consigli!

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.