Erro: Não foi possível localizar nem carregar a classe principal Loja

Preciso de Ajuda,

Variáveis de ambiente na imagem abaixo, está tudo ok ,

Compila tudo certo , mas na hora que quero exibir ele fica desse jeito

Agradeço pelo seu tempo, preciso de ajuda.

Minha Variável de Ambiente ,

Como está a sua estrutura de projeto?

  • trabalho\src\Loja.java?

Caso seja esta, realizando a compilação de forma certa, na sua estrutura terá dois arquivos:

  • trabalho\src\Loja.java e Loja.class

Para executar você precisa estar dentro de src e usar o java Loja.

A estrutura esta correta, segue a imagem :

Sim estou indo pelo CD e pegando o diretorio src da minha pasta e colocando no prompt ,
Ela compila normalmente pelo javac, mas quando executo o main(loja) ele fala que nao encontrou …

Criei uma classe para ver se era problema ao na minha classe Loja, mas realmente nao é , criei uma classe “ola mundo”, e ate ela o cmd n encontrou

A imagem não veio, mas…

Se formos levar em consideração a sua primeira imagem, podemos notar que você está dentro do diretório trabaho, que está dentro do diretório raíz de um projeto Java src(apenas por convenção).

E, tomando com exemplo a imagem acima, admitindo-se que a pasta src é a raíz do seu projeto, sua classe estaria dentro do pacote trabalho.
Desta forma, o Full Qualified Name da classe passa a ser trabalho.Loja.
Para rodar esta classe, você precisa respeitar esse diretório que precede a sua classe Loja. Ou, seja, você precisa estar dentro de src e chamar o nome da sua classe que é agora trabalho.Loja:

  • java trabalho.Loja

Bruno segue a classe Loja :

Como você mencionou em cima :

O erro continua , se quiser mais detalhes para me ajudar, so falar, que mandarei .

Bom, vamos lá, só pincelando o assunto:
O javac e o java possuem uma forma peculiar de execução(como se você tivesse que girar uma chave no seu cérebro para pensar de uma forma como javac e outra como java).

  • javac:
    Quando estamos utlizando o javac, a plataforma Java procura pela sua classe(o arquivo onde você está programando em java, ex: nomeDaMinhaClasseBonitona.java). Precisamos apenas passar javac Loja.java(mas, para isso, no seu caso, é necessário estar dentro da pasta trabalho, pois o arquivo Loja.java está dentro desta pasta, belê?).
    Ou… você pode estar em algum outro lugar do S.O. mas precisa passar o caminho onde está o arquivo da classe Loja.java. Suponha que você esteja no C:\. faríamos:
    • javac C:\umaPastaAi\outraPastaLa\seiLaNomeDoMeuProjeto\src\trabalho\Loja.java
  • java
    Quando vamos executar um código compilado, .class, não precisamos colocar o .class no final, mããs, caso esta classe esteja dentro de algum pacote(seu caso) precisamos respeitá-lo. Pois, para execução, para a máquina virtual, o nome classe será a únião do nomeDoPacote + nomeDoArquivo. O que resulta em trabalho.Loja, mesmo que exista apenas o arquivo Loja.class, mas, dentro deste arquivo, tem a instrução package que diz para a máquina virtual procurar esta classe dentro de um pacote específico. No seu caso o pacote/pasta trabalho.

Sua estrutura é:

src
   trabalho
           Loja

Quando você executa java trabalho.Loja, estando dentro da pasta trabalho e vai fazer isso:

src
   trabalho
    vou procurar aqui dentro a classe trabalho.Loja(mas ela não existe)

Quando passamos java trabalho.Loja, bem resumido, acontece isso aqui:

  • A máquina virtual procura a pasta trabalho e dentro dela procura o arquivo Loja.class.
    • E ela apenas procura pela pasta pasta trabalho, porque, dentro do Loja.java tem uma instrução package dizendo: olha, esta classe, você procura ela dentro de uma pasta chama trabalho, valeu JVM?!

É necessário estar dentro de src(1), para a máquina virtual procurar dentro da pasta seguinte(trabalho) o tal arquivo Loja.
Passando java trabalho.Loja ele vai procurar o pacote trabalho(2), depois vai encontrar a classe Loja(3) e vai rodar o main na tranquilidade:

src(1)
   trabalho(2)
           Loja(3)

Bruno, todo procedimento que foi me passado por você eu verifiquei ,

ainda continua a dar “Erro: Não…”

Se tiver outra ideia estou aqui !

Talvez o problema esteja em minha Variáveis de Ambiente ?

Me mostre a sua configuração para eu ver se a minha esta correta .

Minha Variáveis de Ambiente estão na foto acima.

No processo do javac eu faço \javac *.java (compilar todas minhas classes)

Logo em seguida busco somente main \java Loja

E logo vem o Erro:…

Não há problemas com as variáveis de ambiente, pois, se houvesse, o cmd não encontraria os comandos java e javac. O que não está encontando é o arquivo compilado Loja.class.

Nesta sua primeira imagem, o seu segundo comando, ele vai procurar qualquer arquivo .java, vai compilar e vai gerar os arquivos .class das classes que ele encontrar. Show. Beleza.
O seu terceiro comando, perceba, você continua dentro da pasta trabalho e dentro dela você procura a classe Loja, mas, a classe Loja está dentro do package trabalho, logo, ele não enconta, você precisaria voltar um diretório(como cd ..), ficar dentro do src e dentro do src executar java trabalho.Loja

Um package representa nada mais que pastas.
Após você compilar e gerar o .class, quando for usar o java você precisa respeitar o pacote onde a classe está.
Por este motivo é java trabalho.Loja. É necessário respeitar isto.
Você precisar estar em um diretório que esteja antes do diretório trabalho que por sua vez tenha a classe Loja e executar o comando java trabalho.Loja.

Bom tentei aqui , como você falou eu voltei uma pasta e fui trabalho.Loja

Ainda tentei de vários modos, sem resultado.

Tem alguma ideia se quiser passo whats para você verificar melhor .

Vou usar suas imagens para ilustrar:

Quando programando no seu NetBeans, dentro de src você criou um pacote trabalho e criou sua classe Loja.java alí:
image

Aqui, é pedido para o javac compilar qualquer arquivo .java dentro desta pasta. Tendo em vista que sua classe Loja.java está aqui dentro, neste mesmo local ele gerará um Loja.class(você pode até usar o comando dir que comprova isso).
image

Precisaria, então, olha que simples, voltar um diretório(cd ..) e executar java trabalho.Loja.
imageimage

Analisando seus comandos no prompt de comando:

  • Não funciona pois, o nome da classe não é Loja. Loja é apenas o nome do arquivo.
    O nome da classe é composto de nome do pacote + nome do arquivo: trabalho.Loja.
    Independente do arquivo compilado ser Loja.class. Ele está te falando:
    - Cara, eu não encontrei Loja.
    Você precisar estar na raíz de todos os pacotes(src) e a partir dele chamar a classe que você quer. Como você está dentro do trabalho, que já é um pacote e não mais a raíz dos seus códigos fontes, ele simplesmente fica maluco.
    image

  • Aqui é o mesmo caso:
    image

  • Aqui também:
    image

  • Aqui você está dentro do diretório src e está procurando o arquivo trabalho.java, mas este arquivo não existe(utilizando o dir, por exemplo, novamente, verá).
    image

  • Aqui é o mesmo problema, não existe arquivo trabalho.Loja.java dentro de src.
    image

  • Aqui primeiro é compilado qualquer arquivo .java dentro de trabalho. Ok. Tudo certo.
    Depois, tenta executar uma classe trabalho.Loja.java. Dois pontos:

    • O comando java precisa do arquivo Loja.class e não do arquivo .java.
    • O comando java não precisa do sufixo .class, apenas trabalho.Loja(pacote + classe).
      image
  • Aqui você está no diretório src, beleza, mas o arquivo se chama trabalho.Loja.java?
    Estás dentro do diretório src e está procurando um arquivo de nome trabalho.Loja.java.
    Este arquivo não existe. Funcionaria se fizesse: javac trabalho\Loja.java(é esta estrutura que a máquina virtual java vai procurar quando você passar java trabalho.Java só que no lugar de \ a convenção é o .).
    image

  • É o mesmo caso acima.
    image

  • Seu único erro aqui foi usar javac, deveria usar java.
    image

  • O mesmo caso acima, mas ele iria procurar pela classe Loja dentro de um pacote trabalh.
    image

  • O que você poderia fazer é pedir para compilar qualquer arquivo .java(javac *.java) e não pedir para compilar qualquer arquivo que comece com trabalho que tenha qualquer extenssão(trabalho.*). O javac procura por arquivos .java. E, se, existisse dentro de src algum arquivo de nome trabalho.java, usando javac trabalho.java iria compilar e gerar o trabalho.class sem problemas.
    image

Precisa entrar na sua cabeça…

Que todo projeto tem uma pasta raíz.
Apenas por convenção se chama src.
Que dentro dela você cria seus pacotes e suas classes.
Que, para compilar, você usa o javac seguido no aquivo da sua classe .java ou o diretório completo de onde está o arquivo .java.
Que para executar você usa o java e precisa respeitar o nome da classe que é o nome do pacote + o nome do arquivo da sua classe sem o .class.
Que você, estando em qualquer linha de comando, precisa estar em um diretório que respeite toda a hierarquia que você definiu no package da sua classe .java. para que o comando java funcione.

…ou, você não vai sair do lugar.

Eu agradeço imensamente pela ilustração, dos erros acima cometidos por mim.

Segue a imagem conforme solicitado por você, para que java ache a classe main,

Em src e usei o java trabalho.Loja(minha main) e mesmo assim nada …

Poderia compartilhar o print screen mostrando a sua estrutura de pastas deste projeto?

perdão.

Mas o problema não creio que esteja no código,
Fiz um teste criando apenas uma classe isolada e tentei chamar no cmd e não funcionou …

Me refiro a estrutura visual das pastas(print screen).