Fiz um programa na faculdade, mais quando compilo ele em casa sempre da erro, o que será que está errado???
Compilador
9 Respostas
Posta aqui o erro que a solução pode sair mais rápida.
Mas uma dica: o erro pode ser somente algumas bibliotecas que você esteja usando no seu projeto e que não estão indicadas no classpath da máquina da sua casa, somente estão setadas no classpath da máquina na sua faculdade.
Dá uma olhada nisso que pode resolver…
[]'s.
Aqui deu erro na linha 5 e na linha 180..........
deu isso quando eu compilei:
java.lang.NoClassDefFoundError: Forca
Exception in thread "main"
Process completed.
[code]import javax.swing.*;
public class Forca
{
/// mesagens de alerta
private static void natela(String titulo,String... param)
{
int e=0;
int lim=param.length;
while (e < lim)
{
JOptionPane.showMessageDialog(null,param[e], titulo, JOptionPane.WARNING_MESSAGE);
e++;
}
}
////ler
private static String ler(String titulo, String mensg)
{
String lida;
lida= JOptionPane.showInputDialog(null, mensg, titulo, JOptionPane.QUESTION_MESSAGE);
return lida;
}
//// verifica se é uma letra válida ou é hífen //// retorna boolean
private static boolean validaletra(char letra)
{
if ((Character.isLetter(letra)) || (letra == '-'))
{
return true;
}
else return false;
}
public static void main(String[] args)
{
String palavra= ler("Palavra", "Por favor informe a palavra a ser adivinhada:"); ////palavra a ser adivinhada
String letra; //letras, tentativas
String retorno=""; //// para imprimir as letras acertadas e os _
String erradas="";/// guarda as letras erradas
String digitadas="";// guarda as letras digitadas
int tam= palavra.length(); /////// tamanho da palavra
int tam_let=0; /////// tamanho da string de letras
int acertos[]= new int[tam]; /// array para controle de acertos
int cont_acer=0; // contador de letra certas
int cont_let=0; /// contador de letras digitadas
int cont=0; /// contador
int bug=0; //flag de controle //utilidade: verificar se a letra existe na palavra
int erros=0; ///contador de erros
int validos=1; // controlador do loop de caracteres válidos
char caracter; //// caracter a ser validado
char aux; ///auxiliar na verificação de letra na palavra
try
{
while (validos == 1) // bloco de validação da palavra
{
while(tam == 0) //// verifica se a expressão lida está vazia
{
palavra= ler("Palavra", "Por favor informe a palavra a ser adivinhada, com apenas letras,"+ "\n" +"sem espaços, nem caracteres especiais:");
tam= palavra.length();
}
palavra= palavra.toUpperCase(); /////// Colocar todas as letras para maiúsculo
cont=0;
while (cont < tam)
{
caracter= palavra.charAt(cont);
if (validaletra(caracter)) //verifica se é letra ou hífen
{
validos=0;
}
else
{
tam=0;
validos=1;
break;
}
cont++;
}
} //fim do bloco de validação da palavra
cont=0;
while(cont < tam) //// zerando array de controle /// utilidade: controlar se todas as letras já foram acertas
{
acertos[cont]=0;
cont++;
}
while(erros < 6) //início do loop de tentativas
{
letra= ler("Letra", "Por favor informe uma letra ou hífen:"); //inicío da leitura de letras.
tam_let= letra.length(); /// tamanho de letras digitadas.
validos=1;
while (validos == 1) // bloco de validação das letras
{
while(tam_let != 1) //// verifica se a letra lida está vazia ou maior que um caracter
{
letra= ler("Letra", "Por favor informe uma letra ou hífen,"+ "\n" +" apenas um caracter por vez:");
tam_let= letra.length();
}
letra= letra.toUpperCase(); /////// Colocar a letra para maiúsculo
caracter= letra.charAt(0);
if (validaletra(caracter)) //verifica se é letra ou hífen
{
validos=0;
}
else
{
tam_let=0;
validos=1;
continue;
}
cont=0;
bug=0;
cont_let=digitadas.length();
while(cont < cont_let)
{
aux=digitadas.charAt(cont);
if (aux == caracter)
{
tam_let=0;
validos=1;
natela("Letra", "A letra "+aux+" já foi digitada.");
break;
}
cont++;
}
digitadas+=letra;
} //fim do bloco de validação da letra
cont=0;
bug=0;
caracter= letra.charAt(0);
while (cont < tam) /// verifica se a letra encontra-se na palavra
{
aux= palavra.charAt(cont);
if (caracter == aux)
{
acertos[cont]=1;
bug=1;
}
else
{
if ((cont == tam-1) && (bug==0)) //// é verdadeiro quando a letra não encontra-se na palavra
{
erradas+=" "+letra; //// concatena as letras erradas
erros++;
}
}
cont++;
}
cont=0;
cont_acer=0;
retorno="";
while (cont < tam) /// verifica a quantidade de acertos
{
if (acertos[cont]==1)
{
retorno+= " "+palavra.charAt(cont);
cont_acer++;
}
else
{
retorno+=" _ ";
}
cont++;
}
if (tam == cont_acer) // encerra o loop de tentativas
{
natela("Parabens!", "Parabens, você acertou a palavra:"+ "\n"+palavra);
break;
}
else
{
natela("Acertos", "Palavra:"+"\n"+retorno+"\n\n"+"Letras digitadas erradas:"+"\n"+erradas+"\n\n"+"Você ainda tem "+(6-erros)+" erros disponíveis!");
}
} //fim do loop de tentativas
if (erros == 6)
{
natela("Forca", "Você perdeu!"+"\n"+"Tente outra vez!");
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e.getMessage(),"Atenção",JOptionPane.WARNING_MESSAGE);
}
}
}
Aqui deu erro na linha 5 e na linha 180…
deu isso quando eu compilei:
java.lang.NoClassDefFoundError: Forca
Exception in thread “main”
Process completed.
import javax.swing.*;
public class Forca
{
/// mesagens de alerta
private static void natela(String titulo,String... param)
{
int e=0;
int lim=param.length;
while (e < lim)
{
JOptionPane.showMessageDialog(null,param[e], titulo, JOptionPane.WARNING_MESSAGE);
e++;
}
}
////ler
private static String ler(String titulo, String mensg)
{
String lida;
lida= JOptionPane.showInputDialog(null, mensg, titulo, JOptionPane.QUESTION_MESSAGE);
return lida;
}
//// verifica se é uma letra válida ou é hífen //// retorna boolean
private static boolean validaletra(char letra)
{
if ((Character.isLetter(letra)) || (letra == '-'))
{
return true;
}
else return false;
}
public static void main(String[] args)
{
String palavra= ler("Palavra", "Por favor informe a palavra a ser adivinhada:"); ////palavra a ser adivinhada
String letra; //letras, tentativas
String retorno=""; //// para imprimir as letras acertadas e os _
String erradas="";/// guarda as letras erradas
String digitadas="";// guarda as letras digitadas
int tam= palavra.length(); /////// tamanho da palavra
int tam_let=0; /////// tamanho da string de letras
int acertos[]= new int[tam]; /// array para controle de acertos
int cont_acer=0; // contador de letra certas
int cont_let=0; /// contador de letras digitadas
int cont=0; /// contador
int bug=0; //flag de controle //utilidade: verificar se a letra existe na palavra
int erros=0; ///contador de erros
int validos=1; // controlador do loop de caracteres válidos
char caracter; //// caracter a ser validado
char aux; ///auxiliar na verificação de letra na palavra
try
{
while (validos == 1) // bloco de validação da palavra
{
while(tam == 0) //// verifica se a expressão lida está vazia
{
palavra= ler("Palavra", "<html><font color='#FF0000'>Por favor informe a palavra a ser adivinhada, com apenas letras,</font></html>"+ "\n" +"<html><font color='#FF0000'>sem espaços, nem caracteres especiais:</font></html>");
tam= palavra.length();
}
palavra= palavra.toUpperCase(); /////// Colocar todas as letras para maiúsculo
cont=0;
while (cont < tam)
{
caracter= palavra.charAt(cont);
if (validaletra(caracter)) //verifica se é letra ou hífen
{
validos=0;
}
else
{
tam=0;
validos=1;
break;
}
cont++;
}
} //fim do bloco de validação da palavra
cont=0;
while(cont < tam) //// zerando array de controle /// utilidade: controlar se todas as letras já foram acertas
{
acertos[cont]=0;
cont++;
}
while(erros < 6) //início do loop de tentativas
{
letra= ler("Letra", "Por favor informe uma letra ou hífen:"); //inicío da leitura de letras.
tam_let= letra.length(); /// tamanho de letras digitadas.
validos=1;
while (validos == 1) // bloco de validação das letras
{
while(tam_let != 1) //// verifica se a letra lida está vazia ou maior que um caracter
{
letra= ler("Letra", "<html><font color='#FF0000'>Por favor informe uma letra ou hífen,</font></html>"+ "\n" +"<html><font color='#FF0000'> apenas um caracter por vez:</font></html>");
tam_let= letra.length();
}
letra= letra.toUpperCase(); /////// Colocar a letra para maiúsculo
caracter= letra.charAt(0);
if (validaletra(caracter)) //verifica se é letra ou hífen
{
validos=0;
}
else
{
tam_let=0;
validos=1;
continue;
}
cont=0;
bug=0;
cont_let=digitadas.length();
while(cont < cont_let)
{
aux=digitadas.charAt(cont);
if (aux == caracter)
{
tam_let=0;
validos=1;
natela("Letra", "A letra "+aux+" já foi digitada.");
break;
}
cont++;
}
digitadas+=letra;
} //fim do bloco de validação da letra
cont=0;
bug=0;
caracter= letra.charAt(0);
while (cont < tam) /// verifica se a letra encontra-se na palavra
{
aux= palavra.charAt(cont);
if (caracter == aux)
{
acertos[cont]=1;
bug=1;
}
else
{
if ((cont == tam-1) && (bug==0)) //// é verdadeiro quando a letra não encontra-se na palavra
{
erradas+=" "+letra; //// concatena as letras erradas
erros++;
}
}
cont++;
}
cont=0;
cont_acer=0;
retorno="";
while (cont < tam) /// verifica a quantidade de acertos
{
if (acertos[cont]==1)
{
retorno+= " "+palavra.charAt(cont);
cont_acer++;
}
else
{
retorno+=" _ ";
}
cont++;
}
if (tam == cont_acer) // encerra o loop de tentativas
{
natela("Parabens!", "Parabens, você acertou a palavra:"+ "\n"+palavra);
break;
}
else
{
natela("Acertos", "Palavra:"+"\n"+retorno+"\n\n"+"Letras digitadas erradas:"+"\n"+erradas+"\n\n"+"Você ainda tem "+(6-erros)+" erros disponíveis!");
}
} //fim do loop de tentativas
if (erros == 6)
{
natela("Forca", "<html><font color='#FF0000'>Você perdeu!</font></html>"+"\n"+"Tente outra vez!");
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e.getMessage(),"Atenção",JOptionPane.WARNING_MESSAGE);
}
}
}
Cara, na boa, copiei tua classe e compilei por aqui. Deu tudo certo oh… 
Me diz uma coisa, qual a IDE que você utiliza? Não vejo razão para esse erro que você mostrou acontecer…
[]'s.
Se voce estiver usando Eclipse
Sua configuracao do JDK esta incorreta…
OK
Eu uso o jcreator…
Ja mostro para seu professor para ver se ele sabe ?
So trabalhei com o jCreator so na facu !
Qual é a versão do Java?
veja se a configuracao de instalacao esta setando la para o diretorio onde esta o javac
veja um tutorial aqui.