Erro ao tentar executar arquivo compilado (Não foi possível encontrar ou executar a classe principal)
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
Curtidas 0
Melhor post
Estevão Dias
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.
GOSTEI 1
Mais Respostas
Matheus Coutinho
20/08/2017
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
GOSTEI 0