O erro ' Não foi possível encontrar ou carregar a classe principal 'Ocorre ao usar um comando java no prompt de comando para lançar um programa Java especificando o nome da classe no terminal. A razão pela qual isso acontece é principalmente devido ao erro de programação do usuário ao declarar a classe.
Não foi possível encontrar ou carregar a classe principal - linha de comando Java
Como mencionado antes, esse erro geralmente não está relacionado ao sistema e o usuário comete um erro em vários cenários, conforme mostrado abaixo. Antes de prosseguir, presumimos que você tenha um conhecimento básico da linguagem de programação Java e como ela funciona.
O que causa o erro ‘Não foi possível encontrar ou carregar a classe principal’ em Java?
A mensagem ‘Não foi possível encontrar ou carregar a classe principal’ significa que a primeira etapa do mecanismo Java que busca a classe para execução falhou. o comando java não foi capaz de localizar a classe no diretório correto.
Em alguns casos, você deve adicionar o caminho de arquivo correto e aponte o terminal Java para o local correto. Como você está executando o comando a partir do terminal de linha de comando, o computador não sabe onde a classe pode ser encontrada ou onde está localizada. Em IDEs direcionados, este não é o problema, pois o IDE mantém um ponteiro apontando para o diretório de trabalho atual.
O que é sintaxe ‘java’?
Antes de começarmos a solucionar o motivo do terminal estar retornando um erro ao tentar executar, primeiro precisamos examinar a sintaxe do comando. Se não estiver usando a sintaxe correta, você enfrentará esse erro inevitavelmente.
A sintaxe normal do comando é mais ou menos assim:
java [...] [...]
Aqui está uma opção de linha de comando, é um nome de classe Java totalmente qualificado e é um argumento de linha de comando que é passado para seu aplicativo quando todo o pacote é compilado.
Um exemplo de comando válido é:
java -Xmx100m com.acme.example.ListAppuals kevin arrows bart
O comando acima fará com que o comando java execute as seguintes operações:
- Ele irá procurar por uma versão compilada da classe ‘ com.acme.example.ListAppuals '.
- Depois de pesquisar, ele irá carregar a classe.
- Em seguida, quando a classe é carregada, a classe será pesquisada por um método 'principal' com uma assinatura, modificadores e tipo de retorno válidos. Um exemplo de classe principal seria algo como:
public static void main (String [])
- O método será chamado com os argumentos 'kevin', 'flechas' e 'bart' como string [].
Como corrigir 'Não foi possível encontrar ou carregar a classe principal'
Solução 1: Verificar o argumento do nome da classe
O erro mais comum que os usuários cometem é fornecer um nome de classe errado como argumento (ou um nome de classe correto é uma forma errada). Como estamos declarando parâmetros na linha de comando, é altamente provável que você passe o argumento do nome da classe de uma forma errada. Listaremos aqui todos os cenários possíveis em que você pode cometer um erro.
- Escrevendo um nome de classe simples . Se você declarar a classe em um pacote como ‘com.acme.example’, você deve usar o nome completo da classe incluindo o pacote no comando Java.
java com.acme.example.ListAppuals
ao invés de
java ListAppuals
- Você deve declarar um nome de classe em vez de declarar um nome de arquivo ou caminho. Java não busca a classe se você declarar um nome de caminho / nome de arquivo para ela. Incorreta as entradas incluem o seguinte:
java ListAppuals.class java com / acme / example / ListAppuals.class
- Invólucro deve ser levado em consideração. Os comandos Java diferenciam maiúsculas de minúsculas e se você cometer um erro de até mesmo uma letra, não será capaz de carregar a classe principal. Um exemplo de erros incorretos está:
java com.acme.example.listappuals
- Vocês não deveria declarar para nome do arquivo fonte . Como mencionado antes, você só precisa declarar a classe no formato de nome de classe completo correto. Exemplo de erro é:
java ListAppuals.java
- Este erro também ocorrerá se você fizer um erro de digitação ou esqueça de escrever o nome da classe inteiramente .
Se você cometeu algum erro negligente ao declarar o nome da classe, certifique-se de corrigi-lo e tente iniciar o programa.
Solução 2: Verificando o classpath
Se você declarou o nome da classe corretamente, mas o erro ainda é mostrado, é provável que o comando java não tenha encontrado o nome da classe especificado no caminho. O classpath é um caminho onde o Java Runtime procura por recursos e arquivos de classe. Você pode definir facilmente o caminho de classe usando dois comandos diferentes, conforme mostrado abaixo:
C:> sdkTool -classpath classpath1; classpath2 ... C:> definir CLASSPATH = classpath1; classpath2 ...
Para obter mais informações sobre o caminho de classe, você deve verificar os seguintes documentos.
Documentação do comando Java
Configurando o caminho de classe
Solução 3: Verificando o diretório
Quando você declara um diretório como um caminho de classe, ele sempre corresponderá à raiz do namespace. Por exemplo, se “/ usr / local / acme / classes” estiver no caminho de classe, o Java pesquisará por uma classe “com.acme.example.Appuals”. Ele procurará uma classe com o seguinte caminho:
/usr/local/acme/classes/com/acme/example/Appuals.class
Portanto, em essência, se você colocar o seguinte endereço no caminho de classe, o Java não conseguirá encontrar a classe:
/ usr / local / acme / classes / com / acme / example
Você também deve verificar o seu subdiretório e veja se ele corresponde ao FQN. Se suas classes FQN forem “com.acme.example.Appuals”, então o Java irá procurar por um “Appuals.class” no diretório “com / acme / example”.
Para dar um exemplo, vamos supor o seguinte cenário:
- A classe que você deseja executar é: com.acme.example.Appuals
- o caminho completo do arquivo é: /usr/local/acme/classes/com/acme/example/Appuals.class
- o diretório de trabalho atual é: / usr / local / acme / classes / com / acme / example /
Então, os seguintes cenários seriam válidos:
# errado, FQN é necessário java Appuals # errado, não há pasta `com / acme / example` no diretório de trabalho atual java com.acme.example.Appuals # errado, semelhante ao cenário java -classpath acima. com.acme.example.Appuals # OK; um caminho de classe relativo é definido java -classpath ../../ .. com.acme.example.Appuals # OK; um caminho de classe absoluto é definido java -classpath / usr / local / acme / classes com.acme.example.Appuals
Nota: O caminho de classe também precisa incluir todas as outras classes (não do sistema) que seus aplicativos precisam.
Solução 4: Verificando o pacote da aula
Se todas as soluções acima forem verdadeiras no seu caso, você precisa ter certeza de que seu código-fonte está colocado na pasta correta. Além disso, você declarou corretamente o pacote . Se você executar seu código com um IDE, ele provavelmente o informará sobre o problema. Porém, no nosso caso, como o estamos executando no prompt de comando, o erro passará despercebido e você obterá o erro da classe em discussão.
4 minutos lidos