Erro ao tentar executar arquivo compilado (Não foi possível encontrar ou executar a classe principal)
20/08/2017
0
Olá, meu problema começou quando fui tentar testar meu programa fora da IDE(NetBeans 8.2), copiei o arquivo Servidor.java para uma pasta no meu desktop e compilei o código usando o prompt de comando do windows usando o comando "javac Servidor.java". O programa compilou normalmente como qualquer programa, porem na hora de executar ele apresenta um erro do tipo "Não foi possível encontrar ou executar a classe principal ", alguma solução?
Código:
Código:
/** * * Projeto: PurpleTCP * * @author Matheus Wells * Iniciado em: 20/08/2017 * Ultima Atualização: 20/08/2017 */ package Servidor; ///////////////////////////////////////////////////////////////////////////////| //Importações: import java.net.*; import java.io.*; import java.util.Scanner; ///////////////////////////////////////////////////////////////////////////////| public class Servidor { public static void main(String[] args) throws Exception { //Variaveis Globais String clienteLeitura;//Informação recebida do cliente; String ServidorResposta;//Informação para ser enviada ao cliente; String cmd;//Comando do Servidor; Scanner admLeitura = new Scanner(System.in);//Leitura de comandos do servidor; int porta;//Porta de conexão; ServerSocket servidor;//Variavel de Socket na porta definida; BufferedReader inCli; DataOutputStream outCli; String msgCli; //Variaveis de controle: Boolean ct1 = true;//Mantem a condição do laço principal; Boolean ct2 = false; Boolean ct3 = false; Boolean ct4 = true; ///////////////////////////////////////////////////////////////////////////////| System.out.println("Iniciou"); while (ct1) {//Laço principal; cmd = admLeitura.next();//Atribui a leitura para a variavel cmd; switch (cmd(cmd,1)){//Se a função cmd() retornar "s" o programa fecha; case "s": ct1 = false; break;///// case "i": ct2 = true; break;///// case "outro": break;///// } while (ct2) {//Laço do servidor System.out.println("Insira uma porta para conexão: "); cmd = admLeitura.next(); for (int h = 0; h < cmd.length(); h++) { if (Character.isLetter(cmd.charAt(h)) == false && cmd.length() > 3 && cmd.length() <= 5) { ct3 = true; ct2 = false; } else { System.out.println("Porta invalida"); ct2 = false; } } } while (ct3) { int p = Integer.parseInt(cmd); servidor = new ServerSocket(p); while (ct3) { System.out.println("Ouvindo na porta: "+p); Socket cliente = servidor.accept(); System.out.println("Novo cliente " + cliente.getInetAddress().getHostAddress()); int g = 1; ct4 = true; while (ct4) { try { inCli = new BufferedReader(new InputStreamReader(cliente.getInputStream())); outCli = new DataOutputStream(cliente.getOutputStream()); String nome = "00000:"; //if (g == 1) {outCli.writeBytes(nome);g = 0;} cmd = inCli.readLine(); switch(cmd(cmd,2)) {//COLOCAR SWITCH DENTRO DE UMA OUTRA CLASSE OU USAR A CLASSE QUE JA EXISTE!!! case "h": msgCli = "Server: ajuda"; outCli.writeBytes(msgCli + '\\\\n'); outCli.writeBytes(nome); break;///// case "v": if(g == 2){outCli.writeBytes(nome);}else{g = 2;} break; case "l": break; case "e": msgCli = "Desconectando..."; outCli.writeBytes(msgCli + '\\\\n'); cliente.close(); break; case "c": msgCli = "Creditos"; outCli.writeBytes(msgCli + '\\\\n'); default: msgCli = " Nao e um comando valido"; outCli.writeBytes(cmd.toLowerCase() + msgCli + '\\\\n'); outCli.writeBytes(nome); break; } }catch(IOException e) { System.out.println("Perda da conexão"); cliente.close(); ct4 = false; } } } } } } ///////////////////////////////////////////////////////////////////////////////| public static String cmd(String cmd, int i) { String s = "0"; cmd = cmd.toUpperCase(); if (i == 1) { switch (cmd) { case "AJUDA": System.out.println("Eu não posso te ajudar :("); break; case "SAIR": System.out.println("Encerrando programa..."); s = "s"; break; case "INICIAR": s = "i"; break; default: System.out.println(cmd.toLowerCase() + " Não é um comando valido."); break; } } else { switch(cmd){ case "HELP": s = "h"; break; case "LOGIN": s = "l"; break; case "CREDITS": s = "c"; break; case "EXIT": s = "e"; break; case "": s = "v"; break; default: break; } } return (s); } } ///////////////////////////////////////////////////////////////////////////////| ///////////////////////////////////////////////////////////////////////////////| ///////////////////////////////////////////////////////////////////////////////|
Matheus Coutinho
Curtir tópico
+ 0
Responder
Post mais votado
22/08/2017
Olá Sr.wells, tudo bom?
O problema está no fato dessa classe ter um pacote. Aqui você precisa compilar usando a instrução
O "ponto" depois de -d indica o diretório atual.
Assim, sendo o nome do pacote servidor (geralmente se escreve em letras minúsculas), será criada a estrutura de pastas servidor\\Servidor.class no diretório atual "ponto".
Para executar a classe você precisa do comando
E agora tudo funcionará de acordo.
Um abraço.
O problema está no fato dessa classe ter um pacote. Aqui você precisa compilar usando a instrução
javac -d . Servidor.java
O "ponto" depois de -d indica o diretório atual.
Assim, sendo o nome do pacote servidor (geralmente se escreve em letras minúsculas), será criada a estrutura de pastas servidor\\Servidor.class no diretório atual "ponto".
Para executar a classe você precisa do comando
java servidor.Servidor
E agora tudo funcionará de acordo.
Um abraço.
Estevão Dias
Responder
Mais Posts
22/08/2017
Matheus Coutinho
Olá Estevão Dias, muito obrigado, um problema simples, mas que complicou minha vida esses dias kkkk, e já que estou começando agora, não entendo muito de compiladores e de como usar o NetBeans, pra quem estava acostumado com a IDE da plataforma Arduino que tem pouco mais de 10 botões realmente uteis na barra de ferramentas ando meio perdido naquele mar de opções e nomenclaturas parecidas
Responder
Clique aqui para fazer login e interagir na Comunidade :)