Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problemi con classi Java

    Buonasera.

    Adesso che ho trovato (sul sito Koders.com) vari programmi Java che mi possono essere utili a realizzare l'applicazione che sto cercando di creare, mi ritrovo in difficoltà al momento di utilizzare il programma CommPortIdentifier che ho scaricato da quel sito. Questo è il programma che ho realizzato:

    ------

    package javax.comm;

    import java.io.*;
    import java.util.*;

    public class TestPorte
    {
    public static void main (String [] args)
    {
    try
    {

    System.out.println ("Nome porta specificato.");

    // Specifica di un nome per la porta che desideriamo.

    String portaCercata = "COM1";
    System.out.println ("Enumerazione iniziata.");

    // enumerazione di tutte le porte che JavaComm conosce.

    Enumeration identificatoriPorte = gnu.io.CommPortIdentifier.getPortIdentifiers();
    System.out.println ("Esaminare ID porte. Individuare porta seriale corrispondente al nome " + portaCercata);

    // Ogni identificatore di porta viene poi esaminato per vedere se identifica una porta seriale, e se il nome è
    // quello che stiamo cercando.

    CommPortIdentifier idPorta = null; // verrà settata una volta che sarà stata trovata la porta che vogliamo.
    while (identificatoriPorte.hasMoreElements())
    {
    CommPortIdentifier pid = (CommPortIdentifier) identificatoriPorte.nextElement();
    if (pid.getPortType()==CommPortIdentifier.PORT_SERIAL &&
    pid.getName().equals(portaCercata))
    {
    idPorta = pid;
    System.out.println ("Trovato elemento.");
    break;
    }
    }

    if (idPorta == null)
    {
    System.err.println ("Porta " + portaCercata + " non trovato.");
    System.exit(1);
    }


    // Per acquisire la porta, si usa l'identificatore associato.

    SerialPort porta = null;
    System.out.println ("Tentativo acquisizione della porta.");
    try
    {
    porta = (SerialPort) idPorta.open("nome", 10000); // Nome dell'applicazione a cui serve la porta,
    // attesa massima in millisecondi
    }

    catch (gnu.io.PortInUseException e)
    {
    System.err.println ("Porta già in uso: " + e);
    System.exit(1);
    }

    System.out.println ("Porta acquisita. Accesso esclusivo.");

    // Ora che la porta è stata acquisita, e abbiamo accesso esclusivo ad essa, possiamo configurarla in
    // modo da ottenere i flussi di ingresso e di uscita. Settare i parametri.

    try
    {
    porta.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    }

    catch (UnsupportedCommOperationException e)
    {
    System.err.println ("Operazione non supportata. " + e);
    System.exit(1);
    }

    // Aprire il lettore dei flussi di ingresso e uscita.

    System.out.println ("Aprire lettore flussi.");
    BufferedReader ingresso = null;
    PrintStream uscita = null;
    System.out.println ("Preparazione flussi ingresso/uscita.");

    try
    {
    ingresso = new BufferedReader (new InputStreamReader(porta.getInputStream()));
    }

    catch (IOException e)
    {
    System.err.println ("Apertura flusso di input impossibile: sola scrittura.");
    ingresso = null;
    }

    System.out.println ("Aperto flusso ingresso.");



    uscita = new PrintStream(porta.getOutputStream(), true);

    // La comunicazione vera e propria dei dati avviene a questo punto. Bisogna poi chiudere nuovamente
    // i flussi di ingresso-uscita in modo che le risorse possano in seguito essere assegnate di nuovo.

    if (ingresso != null) ingresso.close();
    if (uscita != null) uscita.close();
    if (porta != null) porta.close();

    // Lettura di dati

    String risposta = ingresso.readLine(); // se è stato inviando "AT", risposta è "OK"

    // Scrittura in uscita

    uscita.print("AT");
    uscita.print("\r\n"); // Line feed

    ingresso.readLine(); // La prima lettura contiene il comando di eco "AT".
    ingresso.readLine(); // La seconda rimuove il line feed che AT genera come output.

    }

    catch (Exception e)
    {
    System.err.println ("Operazione non riuscita. " + e);
    }
    }
    }



    ------

    Quando lo compilo, tutto ok, la classe viene creata senza intoppi. Tuttavia, quando cerco di lanciarlo, mi viene visualizzato un errore come questo:


    "Exception in thread "main" java.lang.NoClassDefFoundError: TestPorteNeo (wrong name javax/comm/TestPorteNeo)"


    Qualcuno mi può dare un suggerimento? Qual è il mio errore, e come posso rimediarci?

    Ringrazio fin d'ora per l'aiuto!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problemi con classi Java

    Originariamente inviato da Justice Gundam
    Quando lo compilo, tutto ok, la classe viene creata senza intoppi. Tuttavia, quando cerco di lanciarlo, mi viene visualizzato un errore come questo:

    "Exception in thread "main" java.lang.NoClassDefFoundError: TestPorteNeo (wrong name javax/comm/TestPorteNeo)"
    Innanzitutto non dovresti dichiarare le tue classi nello stesso package della JavaComm cioè javax.comm !!

    Poi comunque a parte il nome del package che puoi scegliere (quello che vuoi ma appunto non java.blabla o javax.blabla, questi sono riservati per i framework della Sun) spero che tu sappia che i nomi di package si devono sempre "riflettere" nella struttura delle cartelle. E centra anche il "classpath". Non hai detto dove hai messo i file, come hai strutturato le directory e nemmeno cosa usi per compilare, se direttamente il tool javac del JDK oppure altro.

    Quindi o precisi o non è che si può dire più di tanto.

    E infine, io vedo nel sorgente la classe TestPorte, non TestPorteNeo come indicato nell'errore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Beh, sì, io uso javac del JDK, e i miei programmi Java sono nella cartella "bin" del JDK... comunque già la tua risposta mi ha fatto capire dove potrebbe essere l'errore, e cercherò di correggerlo stasera stessa. Per adesso, devo chiudere la mia sessione, e la riprenderò solo domattina, quindi verrò a rivedere questo topic domani e saprò dire se ho corretto il mio errore o meno.

    Chiedo scusa per certe ingenuità che commetto, è che sono ancora abbastanza acerbo per quanto riguarda la comunicazione seriale di Java, e sto cercando di fare piu' esperienza possibile...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Justice Gundam
    e i miei programmi Java sono nella cartella "bin" del JDK...
    Male, non mettere roba tua lì sotto!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Buongiorno.

    Ah, okay... quindi è meglio che metta i miei programmi da un'altra parte? Cavolo, questo non fa altro che dimostrare che sono proprio nuovo a Java...

    Comunque, il mio scopo è creare un'applicazione Java che possa comunicare in seriale con una stampante (EasyCoder 501, utilizza FingerPrint) per dirle cosa stampare di un insieme di record già presente in memoria. Qualcuno mi può dare qualche dritta su dove potrei trovare un aiuto in questo senso?

    Grazie mille!

  6. #6
    Okay, credo di essere ad un passo dalla soluzione - adesso, l'unico problema che ho è l'installazione di RXTX, che mi serve per la comunicazione in seriale. Nonostante l'abbia installato, il mio ambiente di sviluppo Java ancora non riesce a riconoscere, e di conseguenza ad importare il pacchetto gnu.io.*

    Quale potrebbe essere il problema? Vi dico subito che i file rxtxSerial.dll e rxtxParallel.dll sono nelle cartelle in cui dovrebbero essere, e anche il file rxtxComm.jar...

    Grazie mille per ogni aiuto!

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.