Olá amigos!
Quero começar dizendo que sou super iniciante em Java, apesar de já ter experiências diversas com outas linguagens de programação e com Linux.
Muito bem, estava fazendo um trabalho pra faculdade: um programa que verifica os dígitos de um CPF… Normal. Desenvolvi em Windows e ficou funcionou perfeitamente. Segue o código:
[code]class cpf{
public static void main (String[] args) {
String a = args[0]; //pega o cpf digitado
int[] guarda = new int[a.length()]; // cria um array do tamanho do cpf
int c; // apenas contadores
int dezena; // dezena do digito verificador
int unidade; // unidade do digito verificador
for(c=0;c<a.length();c++){
guarda[c] = Integer.valueOf(String.valueOf(a.charAt(c))); // insere cada algarismo inteiro do cpf em um array
//System.out.println(guarda[c] + " - " + c);
}
c = 2*guarda[8] + //Calcule a soma dos produtos dos nove digitos
3*guarda[7] +
4*guarda[6] +
5*guarda[5] +
6*guarda[4] +
7*guarda[3] +
8*guarda[2] +
9*guarda[1] +
10*guarda[0];
//System.out.println(c); //teste de valor: para o 'cpf' 123456789 o valor encontrado deve ser 210
if(c % 11 == 0 || c % 11 == 1){ // calcula a dezena do digito verificador
dezena = 0;
}else{
dezena = 11 - (c % 11);
}
//System.out.println(dezena); //teste de valor: para o 'cpf' 123456789 o valor encontrado deve ser 0
c = 2*dezena + //Calcule a soma dos produtos dos dez digitos (inclui as dezenas agora)
3*guarda[8] +
4*guarda[7] +
5*guarda[6] +
6*guarda[5] +
7*guarda[4] +
8*guarda[3] +
9*guarda[2] +
10*guarda[1] +
11*guarda[0];
//System.out.println(c); //teste de valor: para o 'cpf' 123456789 o valor encontrado deve ser 255
if(c % 11 == 0 || c % 11 == 1){ // calcula a unidade do digito verificador
unidade = 0;
}else{
unidade = 11 - (c % 11);
}
//System.out.println(unidade); //teste de valor: para o 'cpf' 123456789 o valor encontrado deve ser 9
//mostra os digitos verificadores ao final do processo
System.out.println("Os dígitos verificadores do seu CPF são: " + dezena + "" + unidade);
}
}[/code]
Não sei se está bom ou ruim, feio ou bonito, mas sei que funciona em Windows.
Aí então, fui pro Ubuntu que tenho instalado aqui no Notebook e tentei compilar lá:
$ javac cpf.java Compilou certinho!
Então, quando vou executar recebo o seguinte erro:
Exception in thread “main” java.lang.ClassFormatError: cpf (unrecognized class file version)
at java.lang.VMClassLoader.defineClass(libgcj.so.70)
at java.lang.ClassLoader.defineClass(libgcj.so.70)
at java.security.SecureClassLoader.defineClass(libgcj.so.70)
at java.net.URLClassLoader.findClass(libgcj.so.70)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at gnu.java.lang.MainThread.run(libgcj.so.70)
Certo… Provavelmente instalei o JDK errado aqui nessa máquina,
Mas eu me lembro que o meu Eclipse tava funcionando direito!
Aí eu fui lá, abri o Eclipse, iniciei um novo projeto, coloquei essa classe lá, e a minha surpresa foi que ele apontou um erro que ainda NÃO existia! :shock:
Vejam só:
[i]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Integer to int
at cpf.main(cpf.java:23)[/i]
Aí não entendi mais nada…
Funciona no Windows, compila mas não executa no Bash, não compila no Eclipse! :?
Alguém pode me ajudar?
Muito obrigado!>