7
respostas

O compilador não gera .class se o nome da classe publica não for igual ou do .java

Não consegui compilar a class MeuProgramaModificado4 em um fonte com nome 2linhas.java. Dá erro ao invés de gerar um class com o nome da classe, como sugerido no exercício. Estou usando jdk1.8.0_92.

Segue o erro abaixo.

C:\Andre\Curso Java>javac 2linhas.java 2linhas.java:1: error: class MeuProgramaModificado4 is public, should be declared in a file named MeuProgramaModificado4.java public class MeuProgramaModificado4 { ^ 1 error

7 respostas

Bom dia Andre!

Conforme descrito no erro, o compilador exige que o nome do arquivo .java *tenha o mesmo nome da sua *classe declarada dentro deste arquivo. Portanto, você deverá renomear seu arquivo para MeuProgramaModificado4.

Espero ter ajudado, bons estudos!

Boa tarde Andre,

conforme dito pelo Phelipe, a solução está em você renomear o seu arquivo.

Também existe uma convenção em toda a comunidade JAVA.

Ela fala que uma classe JAVA deve começar preferencialmente com leta maiúscula, letras de origem latina (ç), caracteres especias (@, $, #) e também número.

Boa tarde Andre,

conforme dito pelo Phelipe, a solução está em você renomear o seu arquivo.

Também existe uma convenção em toda a comunidade JAVA.

Ela fala que uma classe JAVA deve começar preferencialmente com letra maiúscula

A mesma não deve começar com letras de origem latina (ç), caracteres especias (@, $, #) e também número.

Isso ocorre porque você definiu a classe como pública. Assim, o compilador exige que o nome do arquivo .java seja igual ao da classe criada. Você pode resolver de duas formas:

  1. Mudando o nome do arquivo .java para o mesmo nome da classe pública definida.

  2. Ou você pode definir a classe como default trocando public class MeuProgramaModificado4 para class MeuProgramamModificado4.

Compile usando o arquivo ".java" com o nome modificado. Na hora de rodar a vm chame o nome do arquivo ".class", que estará com nome do método. Ex.: meu método chama "MeuPrograma", então eu faço javac OutroNome.java. O .class gerado será "MeuPrograma.class", então eu faço java MeuPrograma

Para Realizar o que o exercício sugere, tire o modificador "public" da classe, deixe a declaração da classe sem modificado:

class MeuProgramaModificado4  {

public class OutroNome {

public static void main(String[] args) {

System.out.println("Imprimindo linha 1 \nImpressao Linha 2");

} }