Configurando o classpath, porta serial

Eu to tentando configurar o classpath para eu pode acessar a porta serial via java.
Segui diversos manuais mas não to conseguindo usuar os as classes necessarias
class Enumeration
class CommPortIdentifier

como eu faço para usa-las? eu copiei os arquivos para as pasta bin e lib cada um na sua correta…
sao 3 arquivos para copiar 1 na pasta bin e 2 na pasta lib… mas mesmo assim nao funciona.

eu tentei dar um import java.* mesmo assim nao funciono…
o que estou fazendo errado?

vlw!

Tenta isso

import javax.comm.CommPortIdentifier;
import java.util.Enumeration;

package javax.comm does not exist

VLW jah diminuio a quantidade de erros.
eu copiei para os lugares certo?

Fala ai cara, blz?

Eu to mexendo com serial a algum tempinho utilizando javax.comm ou RXTX… pois bem, para a javax.comm funcionar corretamente, utiliza esta classe aqui abaixo, ela vai fazer a instalacao correta dos arquivos, lembrando que todos os 3 arquivos tem que estar na mesma pasta que o .class executado.


import java.io.*;
 
/**
 * Validates that the javax.comm package has been properly installed on this JRE.
 */
public class InstallComm {
 
 
	public static final String javaPath = System.getProperty("java.home");
	public static final String sep = System.getProperty("file.separator");
	
	public static final String dllPath  = javaPath+sep+"bin"+sep;
	public static final String propPath = javaPath+sep+"lib"+sep;
	public static final String jarPath  = javaPath+sep+"lib"+sep+"ext"+sep;
 
 
	public InstallComm() {
	}
 
 
	/**
	 * Returns true if all of the javax.comm package files are properly installed
	 */
	public static boolean validate() {
		String javaPath = System.getProperty("java.home");
 
		System.out.println("javaPath: "+javaPath);
		
		String sep = System.getProperty("file.separator");
		
		File dll  = new File(javaPath+sep+"bin"+sep+"win32com.dll");
		File prop = new File(javaPath+sep+"lib"+sep+"javax.comm.properties");
		File jar  = new File(javaPath+sep+"lib"+sep+"ext"+sep+"comm.jar");
 
		return dll.exists() && prop.exists() && jar.exists();
	}
	
	/**
	 * Installs the javax.comm files into their correct paths
	 */
	public static void install() {
		String javaPath = System.getProperty("java.home");
		String sep = System.getProperty("file.separator");
		String bin = javaPath+sep+"bin"+sep;
		String lib = javaPath+sep+"lib"+sep;
		
		File dll  = new File("c:"+sep+"win32com.dll");
		File prop = new File("c:"+sep+"javax.comm.properties");
		File jar  = new File("c:"+sep+"comm.jar");
 
		File new_dll  = new File(javaPath+sep+"bin"+sep+"win32com.dll");
		File new_prop = new File(javaPath+sep+"lib"+sep+"javax.comm.properties");
		File new_jar  = new File(javaPath+sep+"lib"+sep+"ext"+sep+"comm.jar");
		
		System.out.println("Copying "+dll.getName()+" to "+new_dll.getPath());
		copyFile(dll, new_dll);
		System.out.println("Copying "+prop.getName()+" to "+new_prop.getPath());
		copyFile(prop, new_prop);
		System.out.println("Copying "+jar.getName()+" to "+new_jar.getPath());
		copyFile(jar, new_jar);
		
	}
	
	private static boolean copyFile(File source, File result) {
		
		try {
			System.out.println("cmd.exe /C copy \""+source.getPath()+"\" \""+result.getAbsolutePath().replaceAll(result.getName(), "")+"\"");
			System.out.println(Runtime.getRuntime().exec("cmd.exe /C copy \""+source.getPath()+"\" \""+result.getAbsolutePath().replaceAll(result.getName(), "")+"\""));
 
			return true;
		} catch (IOException ioe) {
			try {
				System.out.println("command.com /C copy \""+source.getPath()+"\" \""+result.getAbsolutePath().replaceAll(result.getName(), "")+"\"");
				System.out.println(Runtime.getRuntime().exec("cmd.exe /C copy \""+source.getPath()+"\" \""+result.getAbsolutePath().replaceAll(result.getName(), "")+"\""));
	
				return true;
			} catch (IOException ioe2) {
				System.out.println("An error occured: " + ioe2.getMessage());
				return false;
			}
		}
	} 

	public static void main(String[] args) {
		if(!validate()) {
			System.out.println("javax.comm not installed. Installing files...");
			install();
		} else {
			System.out.println("javax.comm installed. ");
		}
	}
 
}

Eu peguei este codigo a algum tempo e fiz algumas alteracoes nele, como ele num é meu originalmente podem usar como quiserem…

Após fazer a instalação correta, rode o programa abaixo e veja se funciona corretamente…


import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.comm.CommPortIdentifier;

public class PortasDisponiveis {

	private Enumeration listaDePortas;
	
	public PortasDisponiveis() {
		listaDePortas = CommPortIdentifier.getPortIdentifiers();
	}
	
	public boolean isEmpty() {
		return !listaDePortas.hasMoreElements();
	}
	
	public List<String> listarPortas() {
		List<String> lista = new ArrayList<String>();
		int i = 0;
		while(listaDePortas.hasMoreElements()) {
			CommPortIdentifier port = (CommPortIdentifier) listaDePortas.nextElement();
			lista.add(port.getName());
			System.out.println("[" + i + "] " + port.getName());
			i++;
		}
		return lista;
	}
	
	public static void main(String[] args) {
		System.out.println("<--- CommPortIdentifier TESTE --->");
		
		PortasDisponiveis portas = new PortasDisponiveis();
		//System.out.println(portas.isEmpty());
		portas.listarPortas();
		
		System.out.println("<--- FINALIZADO --->");
	}
	
	
}

Esse ultimo codigo eu fiz, mas pode usar como quiser, se econtrar algum problema avisa ai…

espero ter ajudado! Abracos!

Boa sorte com a porta serial… mas mais chato ainda é mexer com a paralela…

Pega o .jar que está faltando no seu projeto aqui …
http://www.sun.com/download/products.xml?id=43208d3d

espero que me ajude… mas deu esse erro na execulção da classe de instalaçaõ

Exception in thread “main” java.lang.NoClassDefFoundError: InstallComm (wrong na
me: install/InstallComm)
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$000(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)

voce deu o mesmo nome da classe que o arquivo .java?

classes public devem ter os arquivos com o mesmo nome.

ah… eu editei o codigo eu removi os packages do comeco deles… talvez estejam no seu codigo tambem… retira eles, blz?

dei sim…

eu tirei os packet e deu isso
javaPath: C:\Arquivos de programas\Java\jre1.6.0_01
javax.comm not installed. Installing files…
Copying win32com.dll to C:\Arquivos de programas\Java\jre1.6.0_01\bin\win32com.d
ll
cmd.exe /C copy “c:\win32com.dll” "C:\Arquivos de programas\Java\jre1.6.0_01\bin
"
java.lang.ProcessImpl@c17164
Copying javax.comm.properties to C:\Arquivos de programas\Java\jre1.6.0_01\lib\j
avax.comm.properties
cmd.exe /C copy “c:\javax.comm.properties” “C:\Arquivos de programas\Java\jre1.6
.0_01\lib”
java.lang.ProcessImpl@1fb8ee3
Copying comm.jar to C:\Arquivos de programas\Java\jre1.6.0_01\lib\ext\comm.jar
cmd.exe /C copy “c:\comm.jar” "C:\Arquivos de programas\Java\jre1.6.0_01\lib\ext
"
java.lang.ProcessImpl@61de33

deu certo?

soh uma coisa… acho q nao pois estou na faculdade nao tenho permissao nessa pasta… eu instalei o java no desktop que eh onde eu tenho permisao…
o javac tah funcinando nessa pasta.

aparentemente, funcionou, vc conseguiu rodar o segundo codigo?

nao… quando eu compilo ele aparece

PortasDisponiveis.java:5: package javax.comm does not exist
import javax.comm.CommPortIdentifier;
^
PortasDisponiveis.java:12: cannot find symbol
symbol : variable CommPortIdentifier
location: class PortasDisponiveis
listaDePortas = CommPortIdentifier.getPortIdentifiers();
^
PortasDisponiveis.java:23: cannot find symbol
symbol : class CommPortIdentifier
location: class PortasDisponiveis
CommPortIdentifier port = (CommPortIdentifier) listaDePo
rtas.nextElement();
^
PortasDisponiveis.java:23: cannot find symbol
symbol : class CommPortIdentifier
location: class PortasDisponiveis
CommPortIdentifier port = (CommPortIdentifier) listaDePo
rtas.nextElement();
^
4 errors

funiona em windows xp neh?

entao 2 coisas…
primeiro: para o primeiro programa fuincionar os arquivos tem q estar no c:\

eu to lendo sobre esses arquivos… parece q o java abandono eles…
continua dando que o javax nao foi encontrado…
o q falta?

eu to vendo isso… e peguei os arquivos e congigurei o classpath assim

C:\Documents and Settings\guiga\Desktop\java\jdk\lib\comm.jar

mas qdo eu execulto da isso
Exception in thread “main” java.lang.NoClassDefFoundError: PortasDisponiveis/
ss
em todos os arquivos java… qualquer um…
q q tah dando errado agora?

eu reconfigurei o classpath colocando o . antes do endereço de comm.jar e agora ele aparece isso

teste.java:5: package javax.comm does not exist
import javax.comm.CommPortIdentifier;

troquei tanto aki… q compilo… agora um problema…

listaDePortas.hasMoreElements()
sempre retorna false…
q q eh ?
entao ele nao cria a lista de portas disponiveis!