A classe Java roda bem no IntelliJ, mas não na linha de comando

0

Eu compilei e executei um arquivo Java simples no IntelliJ. Ele contém um método principal e outro método estático pequeno. Funciona perfeitamente todas as vezes.

No entanto, sempre que tento executar o comando java no arquivo .class do terminal, recebo este:

Error: Could not find or load main class [file name here]

O que estou fazendo de errado?

    
por Case-In-Point 23.07.2017 / 02:59

1 resposta

1

Você precisa executar java YourClassName , não java YourClassName.class .

O problema é que você está incluindo o sufixo .class no comando.

Existem algumas outras explicações possíveis, já que você não deu o comando específico que você executou. É possível que você esteja executando o comando de algum lugar diferente do local do seu arquivo .class e não fornecendo um caminho completo para ele, ou que esteja digitando incorretamente o nome dele e assim por diante. No entanto, incluir um sufixo .class espúrio, que o comando java não espera, é a causa mais comum desse problema.

Suponha que a classe que contém o ponto de entrada do seu programa ( main() method) seja chamada Foo e que seu código-fonte esteja em um arquivo no diretório atual chamado Foo.java , para que você compilasse seu programa executando %código%. Como javac Foo.java é o nome da classe, isso produz um arquivo chamado Foo contendo o bytecode Java compilado para essa classe.

Para executar o programa, você deve executar:

java Foo

Sua descrição faz parecer que você está executando Foo.class . Esse é um obstáculo comum para usuários que usam o comando java Foo.class para executar java arquivos pela primeira vez (estejam eles programando em Java ou apenas executando .class arquivos fornecidos por outra pessoa).

.class não funciona; o comando java Foo.class interpreta seu argumento como o nome da classe que contém o ponto de entrada, não o nome do arquivo. Quando você executa java , ele sabe procurar por um arquivo chamado java Foo .

    
por Eliah Kagan 23.07.2017 / 03:32