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:
/** *
* 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

Matheus Coutinho

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

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

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar