Newsgroup: it.comp.java
Titolo: Java e porte seriali...

Salve a tutti!
Stň cercando di fare un programmino che comunichi con una scheda collegata
ad una RS232 del computer utilizzando il jdk1.3.1_02.
Ho scaricato e installato le API comm da Sun Java javacomm20-win32.zip
seguendo le indicazioni della documentazione inclusa.
Per cominciare vorrei usare il programmino allegato SerialDemo, quindi provo
a compilare:
D:\Progetti\JDK\SerialDemo>javac SerialDemo.java
.
.
.
SerialDemo.java:588: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent, "Port Open!",
                                         ^
SerialDemo.java:602: cannot resolve symbol
symbol  : class SerialConnectionException
location: class SerialDemo.ConfigurationPanel
                } catch (SerialConnectionException ex) {
                         ^
SerialDemo.java:605: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent,
                    ^
SerialDemo.java:605: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent,
                                         ^
Note: SerialDemo.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
14 errors
D:\Progetti\JDK\SerialDemo>
Purtroppo riesco a vedere solo questi, in quanto da finetra dos di Windows95
il resto non si puň piů vedere.
Decido quindi di comtrollare le opzioni di compilazione javac:
D:\Progetti\JDK\SerialDemo>javac
Usage: javac <options> <source files>
where possible options include:
  -g                        Generate all debugging info
  -g:none                   Generate no debugging info
  -g:{lines,vars,source}    Generate only some debugging info
  -O                        Optimize; may hinder debugging or enlarge class
file
  -nowarn                   Generate no warnings
  -verbose                  Output messages about what the compiler is doing
  -deprecation              Output source locations where deprecated APIs
are us
ed
  -classpath <path>         Specify where to find user class files
  -sourcepath <path>        Specify where to find input source files
  -bootclasspath <path>     Override location of bootstrap class files
  -extdirs <dirs>           Override location of installed extensions
  -d <directory>            Specify where to place generated class files
  -encoding <encoding>      Specify character encoding used by source files
  -target <release>         Generate class files for specific VM version
D:\Progetti\JDK\SerialDemo>
Provo quindi a compilarlo in questo modo:
D:\Progetti\JDK\SerialDemo>javac -classpath
c:\jdk1.3.1_02\jre\lib\ext\comm.jar
SerialDemo.java
.
.
.
SerialDemo.java:588: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent, "Port Open!",
                                         ^
SerialDemo.java:602: cannot resolve symbol
symbol  : class SerialConnectionException
location: class SerialDemo.ConfigurationPanel
                } catch (SerialConnectionException ex) {
                         ^
SerialDemo.java:605: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent,
                    ^
SerialDemo.java:605: cannot resolve symbol
symbol  : class AlertDialog
location: class SerialDemo.ConfigurationPanel
                    AlertDialog ad = new AlertDialog(parent,
                                         ^
Note: SerialDemo.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
14 errors
D:\Progetti\JDK\SerialDemo>
Non cambia nulla. Decido cosě di togliere il classpath da autoexec.bat.
(SET CLASSPATH=C:\jdk1.3.1_02\jre\lib\ext\comm.jar).
Riavvio il PC e Riprovo:
D:\Progetti\JDK\SerialDemo>javac SerialDemo.java
Note: SerialDemo.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
D:\Progetti\JDK\SerialDemo>
Il compilatore mi segnala solo questo (...mah).
Vediamo:
D:\Progetti\JDK\SerialDemo>javac -deprecation SerialDemo.java
SerialDemo.java:343: warning: save(java.io.OutputStream,java.lang.String) in
jav
a.util.Properties has been deprecated
        newProps.save(fileOut, "Serial Demo properties");
                ^
1 warning
D:\Progetti\JDK\SerialDemo>
Proviamo a farlo girare:
D:\Progetti\JDK\SerialDemo>java SerialDemo
Exception in thread "main" java.lang.NoClassDefFoundError:
javax/comm/CommPortId
entifier
        at
SerialDemo$ConfigurationPanel.listPortChoices(SerialDemo.java:563)
        at SerialDemo$ConfigurationPanel.<init>(SerialDemo.java:451)
        at SerialDemo.<init>(SerialDemo.java:143)
        at SerialDemo.main(SerialDemo.java:89)
D:\Progetti\JDK\SerialDemo>
Questo č sicuramente dovuto al fatto che ho tolto la classpath da
autoexec.bat.
OK, proviamo a dargli le informazioni che mancano:
D:\Progetti\JDK\SerialDemo>java -cp c:\jdk1.3.1_02\jre\lib\ext\comm.jar
SerialDemo
Exception in thread "main" java.lang.NoClassDefFoundError: SerialDemo
D:\Progetti\JDK\SerialDemo>
Controlliamo ancora le opzioni di java:
D:\Progetti\JDK\SerialDemo>java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java -jar [-options] jarfile [args...]
           (to execute a jar file)
where options include:
    -hotspot      to select the "hotspot" VM
                  If present, the option to select the VM must be first.
                  The default VM is -hotspot.
    -cp -classpath <directories and zip/jar files separated by ;>
                  set search path for application classes and resources
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -showversion  print product version and continue
    -? -help      print this help message
    -X            print help on non-standard options
D:\Progetti\JDK\SerialDemo>
Proviamo cosě:
D:\Progetti\JDK\SerialDemo>java -jar -cp c:\jdk1.3.1_02\jre\lib\ext\comm.jar
Ser
ialDemo
Exception in thread "main" java.util.zip.ZipException: The system cannot
find th
e file specified
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)
D:\Progetti\JDK\SerialDemo>
Io sono un novellino e stň cercando di imparare, ma non riesco a trovare il
supporto necessario per riuscire in questo mio semplice intento.
Mi potete aiutare?
Grazie.


L'opzione -jar non c'entra; come t'ho spiegato prima,
l'interprete non trovava la tua classe, ma trovava JavaComm.
All'incirca penso che con l'opzione -jar capisca che
SerialDemo sia un jar; cercando SerialDemo.jar, non lo trova
e dà eccezione. Vedi sopra per la soluzione.
--
Paolo Giarrusso