style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Puerto Serial javax/comm/NoSuchPort Exception

Tengo el siguiente problema
estamos haciendo una aplicacion con las librerias de comm del api, el programa funciona bien cuando lo ejecuto desde el entorno de netbeans(NetBeans IDE 7.1 (Build 201112071828)
Java: 1.7.0_03; Java HotSpot(TM) Client VM 22.1-b02) corre perfecto hace lo que tiene que hacer sin tapujos, ahora cuando lo quiero ejecutar desde la ventana de cmd en windows(Windows 7 version 6.1 running on x86; Cp1252; en_US (nb)) no funciona me manda el siguiente error;

Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/NoSuchPort Exception

at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.comm.NoSuchPortException
at java.net.URLClassLoader$1.run(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)

y no ejecuta nada, ahora compile con la ayuda de xlint y me mada el siguiente warning en el netbeans

warning: [unchecked] unchecked conversion
Enumeration eList = CommPortIdentifier.getPortIdentifiers();
required: Enumeration
found: Enumeration
1 warning

el codigo donde creo yo que ocurre es por aca pero no se como resolverlo o la verdad no se si sea aki el problema, me dice que es en una clase que si esta(ya la revise) en el comm.jar que esta en mi jdk, pero bueno estoy en blanco

Enumeration eList = CommPortIdentifier.getPortIdentifiers();
int iCount=0;
String[] strCommPort = new String[50];
while(eList.hasMoreElements())
{
CommPortIdentifier cpi = eList.nextElement();// se hace un cast para todos y cada uno de los elementos de la lista enumeration

map.put(cpi.getName(), cpi);//se almacena en forma de hash, haciendo match el key=cpi.getName() y el identificador cpi

if(cpi.getPortType() == CommPortIdentifier.PORT_SERIAL)//se buscan cuales son puertos seriales
{
strCommPort[iCount] = cpi.getName();//se almacena en un arreglo los identificadores con los que se reconoceran los puertos en la computadora
iCount++;
}
}

antes de este warning resolvi otros que mejoraron el desempenyo del programa entonces creo yo que este warning es el que me esta impidiendo la ejecucion del programa

gracias de antemano

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Checa si tienes esta libreria

Checa si tienes esta libreria en los import :import java.util.Enumeration;
No estas haciendo el cast en esta parte:CommPortIdentifier cpi = eList.nextElement();
tiene que ser asi:CommPortIdentifier cpi = (CommPortIdentifier)eList.nextElement();

Y no estoy muy seguro pork no he hecho muchas pruebas en Windows 7 pero me parece k la libreria javax.comm no es soportado en windows 7. De hecho probe la libreria en windows 7 para obtener la lista de puertos y no me obtuvo nada; y cuando lo probe con la libreria RXTXcomm me obtuvo toda la lista de puertos. asi k t recomiendo usar la libreria rxtx en vez de la javax.comm

lo puedes descargar de este link: http://dl.dropbox.com/u/29160321/Blog/MoverLeds.rar
este link te descargara un proyecto y adentro del proyecto encontraras la libreria RXTXcomm.jar,rxtxParallel.dll y rxtxSerial.dll copias estas librerias a tu proyecto.

Imagen de leon_acor

Revisado

hola, oye ya le puse lo que me dijiste y sigue igual manda otro warning al construir el .jar con el mismo problema, ahora mira lo que yo he estado checando es que al momento de que ejecuto el jar desde la ventana de comandos SI corre, el problema es que no enumera los puertos encontrados me marca error, no encuentra ningun com, y desde mi netbeans todo pasa perfecto enumera y hace el reconocimiento, por eso es que creo yo que el problema viene de ahi pego algo

Enumeration eList = CommPortIdentifier.getPortIdentifiers();ESTA LINEA EL PROBLEMA

int iCount=0;
String[] strCommPort = new String[50];
while(eList.hasMoreElements())
{
CommPortIdentifier cpi = eList.nextElement();//AQUI NO ES NECESARIO EL CAST
map.put(cpi.getName(), cpi);
if(cpi.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
strCommPort[iCount] = cpi.getName();
iCount++;
}
}

warning: [unchecked] unchecked conversion
Enumeration eList = CommPortIdentifier.getPortIdentifiers();
required: Enumeration
found: Enumeration
1 warning

pones la libreria javax.comm

pones la libreria javax.comm en el mismo directorio que el .jar?
si no es asi tines que poner la libreria en el mismo directorio en el que se encuentra el jar ya que al ejecutarlo en netbeans la referencia a la libreria la hace el mismo netbeans pero al ejecutarlo en el simbolo de sistema se busca la libreria que se encuentre en el mismo directorio por default.

ok hice algunas pruebas,

ok hice algunas pruebas, primero ejecute el programa desde netbeans y como tu dices no hay ningun problema, pero al ejecutarlo desde simbolo de sistema entonces no se cargo la lista como tu dices. Pero despues de copiar los archivos de javax comm a los directorios correctos y ejecutar de nuevo desde simbolo de sistema me obtuvo la lista.
lo k hice fue lo siguiente:
copie el archivo javax comm.properties a: la carpeta lib del directorio jre del jdk
copie el archivo win32com.dll a: la carpeta bin del directorio jre del jdk
la libreria comm.jar la referencie desde netbeans:
en la parte izquierda tienes la barra de proyectos das clic con boton secundario en bibliotecas, elijes la opcion Agregar archivo jar/carpeta, vas al directorio donde se encuentra la libreria comm.jar y la elijes,le das en abrir y listo la libreria ha sido referenciada.
posteriormente tienes que generar el archivo .jar.
cuando se haya generado el archivo jar en el directorio dist encontraras una carpeta llamada lib y dentro estara la libreria comm.jar porque esa es la que se usara.
y al ejecutar tu jar te tendra k mostrar tu lista de puertos.

Nota: en el directorio "archivos de programa/java" se encuentra el jdk. pero en mi caso se encuentra el directorio jdk y un directorio jre. En caso de k tengas lo mismo primero intenta colocando los archivos en el directorio jdk/jre si no funciona entonces colocalos en el directorio jre.

Imagen de leon_acor

RESUELTO

hola hice lo que me dijiste y 100% te lo agradesco, puse los archivos en el JRE y en el JDK y todo bien, gracias!!!

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">