Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [java] problema import

  1. #1

    [java] problema import

    Salve a tutti....

    dopo tanto tempo torno a programmare in java, ho scaricato il jdk 1.5 ma quando vado a compilare un programmino non riesce a trovare import javax.comm.*; suggerimenti??
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    è un package non della core standard di java, quindi devi scaricartelo da qui: http://java.sun.com/products/javacom...ads/index.html
    scegliendo quello per il sistema operativo che stai usando.

    Quindi, se non presenti, crei i compilati e, se non presente anche lui, il file jar; quindi lo copi in JAVA_HOME/jre/lib/ext

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    grazie per il consiglio....lo ho seguito e tutto è andato liscio: ho installato il package extra ed ora riesco a compilare senza che mi dia errori...cmq al momento dell'esecuzione ottengo questa eccezione e non so dove andare a parare...:
    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError: ScriviSuSeriale (wron
    g name: dev/javacomm/ScriviSuSeriale)
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    grazie ancora...
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  4. #4
    Non riesce a trovare il compilato...
    Controlla la CLASSPATH e (se presente) il package che hai dichiarato nei sorgenti.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da leorsid@
    grazie per il consiglio....lo ho seguito e tutto è andato liscio: ho installato il package extra ed ora riesco a compilare senza che mi dia errori...cmq al momento dell'esecuzione ottengo questa eccezione e non so dove andare a parare...:
    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError: ScriviSuSeriale (wron
    g name: dev/javacomm/ScriviSuSeriale)
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    grazie ancora...
    Credo che tu lo stia eseguendo dalla posizione sbagliata; devi posizionarti nella root di dev e da lì eseguire con il seguente comando:
    codice:
    java dev.javacom.ScriviSuSeriale
    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

  6. #6
    allora, premetto che lo sto usando sotto win xp
    ho fatto le seguenti operazioni per includere il pacchetto sotto il jdk1.5:
    1)copiato win32com.dll sotto C:\Programmi\java\jdk1.5.0_01\bin
    2)copiato comm.jar sotto C:\Programmi\java\jdk1.5.0_01\jre\lib\ext\
    3)copiato javax.comm.properties sotto C:\Programmi\java\jdk1.5.0_01\jre\lib
    4)sono andato in pannello di controllo > prestazioni e manutenzione > sistema > avanzate > variabili di ambiente > path ed ho agiunto la stringa C:\Programmi\java\jdk1.5.0_01\lib\ext\comm.jar

    e non funziona ancora.....sbaglio qualcosa??
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da leorsid@
    allora, premetto che lo sto usando sotto win xp
    ho fatto le seguenti operazioni per includere il pacchetto sotto il jdk1.5:
    1)copiato win32com.dll sotto C:\Programmi\java\jdk1.5.0_01\bin
    2)copiato comm.jar sotto C:\Programmi\java\jdk1.5.0_01\jre\lib\ext\
    3)copiato javax.comm.properties sotto C:\Programmi\java\jdk1.5.0_01\jre\lib
    4)sono andato in pannello di controllo > prestazioni e manutenzione > sistema > avanzate > variabili di ambiente > path ed ho agiunto la stringa C:\Programmi\java\jdk1.5.0_01\lib\ext\comm.jar

    e non funziona ancora.....sbaglio qualcosa??
    A rischio di sembrare ripetitivo: l'applicazione la esegui dalla posizione corretta? Noto che fai uso dei package e la maggior parte delle volte tale errore è dato proprio da un errata posizione nel richiamare la classe con il main().

    PS: win32com.dll puoi lasciarlo dov'era, che tanto la sua posizione non incide.


    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

  8. #8
    Scusa se nn ho capito, ma cosa intendi per "l'applicazione la esegui dalla posizione corretta?"....io compilo ed eseguo il codice in una cartella del mio desktop sotto XP.
    Riporto qui anche il codice che tento di eseguire.....
    codice:
    	package         dev.javacomm;
    
    	import          javax.comm.*;
    	import          java.io.*;
     
    
    	// Questa classe permette di scrivere sulla porta
    	// seriale il cui nome è specificato nel costruttore
    	// della stessa.
    	//
     
    
    	public class ScriviSuSeriale  {
     
    
    		// Crea un oggetto che scrive il valore della stringa
    		// message sulla porta seriale port.
    		//
    		public ScriviSuSeriale(String port, String message){
      			try{
    
      				// Prendiamo il descrittore della porta scelta. 
      				// Nel caso in cui la porta non esista verrà
      				// sollevata una eccezione di tipo
      				// NoSuchPortException.
    
      				CommPortIdentifier id_porta;
      				id_porta= CommPortIdentifier.getPortIdentifier(port);
    
      				// Proviamo a prendere l'ownership della porta data. 
      				// Nel caso in cui la porta sia già occupata verrà 
      				// sollevata una eccezione
      				// di tipo PortInUseException
      				CommPort porta=id_porta.open("ScriviSuSeriale",200);
    
      				// Otteniamo un riferimento all'OutputStream 
      				// della porta
    
      				OutputStream out=porta.getOutputStream(); 
      				// Impostiamo le proprietà di comunicazione nel
      				// seguente modo:
      				// baudrate 9600
      				// dataBits DATABITS_8
      				// stopBits DATABITS_1
      				// parity PARITY_NONE
      				// Nel caso in cui i valori impostati non siano
      				// supportati verrà sollevata una eccezione di 
      				// tipo UnsupportedCommOperationException
    
    				SerialPort      porta_seriale=(SerialPort)porta;
    				porta_seriale.setSerialPortParams(9600,
                 			SerialPort.DATABITS_8,
                 			SerialPort.STOPBITS_1,
                 			SerialPort.PARITY_NONE);
    				// Procediamo, quindi, alla scrittura del 
    				// messaggio sulla porta
    
    				PrintStream ps= new PrintStream(out);
    				ps.print(message);
    				//Chiudiamo la porta
    				ps.close();
    				porta.close();
    			}
    			catch(NoSuchPortException ne){
      				System.out.println("La porta "+port+" non e' presente");
    			}catch(PortInUseException pe){
      				System.out.println("La porta "+port+" e' occupata da"+pe.currentOwner);
    			}catch(UnsupportedCommOperationException ue){
      				System.out.println("La porta non supporta le proprietà impostate");
    			}catch(IOException ioe){
      				System.out.println("Errore di IO");
    			}// fine try/catch
    
    		}// fine
     
    
    		public static void main(String[] args){
     			if(args.length<2){
      				System.out.println("Usage java ScriviSuSeriale <port name> <message>");
    			}	
     			else{
       				ScriviSuSeriale scrivi= new ScriviSuSeriale(args[0],args[1]);
    			}// fine else
            }// fine
    
    	}// fine
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Mi sa, quindi, che non esegui il programma dalla posizione corretta.
    Nota che tu utilizi, come prima riga del tuo codice, questa istruzione:
    codice:
    package dev.javacomm;
    Questo significa che questa classe deve risiedere all'interno di una cartella javacomm all'interno di una cartella dev.
    Questa deve essere la struttura:
    codice:
    TuaCartellaqualsiasi
    |
    +--- dev
         |
         +--- javacomm
              |
              +--- ScriviSuSeriale.java
              |
              +--- ScriviSuSeriale.class
    Tu devi posizionarti all'interno della cartella che io ho chiamato TuaCartellaQualsiasi (che potrebbe anche essere il desktop) e avviare da lì l'applicazione con questo comando:
    codice:
    C:\...\TuaCartellaQualsiasi> java dev.javacomm.ScriviSuSeriale
    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

  10. #10
    Grazie mille!! ora funziona....cmq per eliminare ogni problema ho levato la dichiarazione del package, inoltre mi sono accorto che l'installazione delle api sotto windows suggerita dalla sun non sono del tutto corrette, riporto qui sotto l'iter che ho trovato su un newsgroup per chi ne ha bisogno:
    codice:
    Procedura di installazione delle API
    ------------------------------------
    
    1) Scaricare dal sito della SUN il file .zip delle API. Per fare questo si
    deve andare alla
    seguente URL:
    
    http://java.sun.com/products/javacomm/
    
    Andate al paragrafo: "Download API Implementations " ed in particolare
    selezionate:
    
    Version 2.0 for Windows
    
    fate click sul pulsante. Seguendo l'iter dovreste arrivare ad una schermata
    relativa al download
    del file:
    
    javacomm20-win32.zip
    
    2) Al termine del download esplodete il file e copiate i file riportati
    nelle cartelle indicate (non seguite assolutamente le indicazioni fornite
    da SUN per l'installazione, se lo fate perderete come me e molti altri,
    intere giornate di incavolature e ore passate a girare in Internet):
    
    il file win32com.dll va copiato in:
    
    C:\WINDOWS\SYSTEM32
    C:\Programmi\Java\j2re1.4.1_02\bin
    C:\j2sdk1.4.1_02\jre\bin
    
    il file javax.comm.properties va copiato in:
    
    C:\Programmi\java\j2re1.4.1_02\lib
    C:\j2sdk1.4.1_02\jre\lib
    
    il file comm.jar va copiato in:
    
    C:\j2sdk1.4.1_02\jre\lib\ext
    
    3) A questo punto aprite con il notepad il file autoexec.bat e scrivete:
    
    SET PATH=%PATH%;c:\j2sdk1.4.1_02\bin
    SET CLASSPATH=.;C:\j2sdk1.4.1_02\jre\lib\ext\comm.jar
    
    attenzione a copiare esattamente il CLASSPATH come scritto, con il .
    all'inizio (fate copia-incolla per sicurezza, anche qua ci sono cascato e
    sono volati via
    i quarti d'ora per capire cosa non funzionava).
    Salvate il file autoexec.bat e riavviate il PC per rendere attive le nuove
    impostazioni.
    
    4)  per verificare se l'operazione di installazione è andata a buon fine,
    andate nella cartella dove
    avete esploso il file delle communication API e copiatevi, ad esempio in
    C:\temp, tutto il contenuto
    della cartella BlackBox che trovate al percorso commapi\samples\BlackBox
    (ottenuto esplodendo il file
    javacomm20-win32.zip).
    Aprite il prompt del DOS ed andate in C:\Temp.
    A questo punto scrivete:
    
    java BlackBox
    
    ... fatemi sapere che cosa succede ;-)))))
    
    Se ottenete un messaggio del tipo:
    
    serial port not found!
    
    è probabile che abbiate dimenticato di copiare qualche file oppure che io mi
    sia dimenticato di scrivere
    qcsa (il post l'ho ricontrollato alcune volte, ma data l'ora ed il mal di
    testa non assicuro niente ;-) ).
    In ogni caso, visto le tribolazioni che ho passato, sono qua per aiutare,
    per quanto mi è possibile, tutti
    coloro che vorranno cimentarsi in questa impresa.
    ciao ciao
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

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.