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.
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.
Como está a sua estrutura de projeto?
Caso seja esta, realizando a compilação de forma certa, na sua estrutura terá dois arquivos:
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:
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
: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ê?).java
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:
trabalho
e dentro dela procura o arquivo Loja.class
.
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í:
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).
Precisaria, então, olha que simples, voltar um diretório(cd ..
) e executar java trabalho.Loja
.
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.
Aqui é o mesmo caso:
Aqui também:
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á).
Aqui é o mesmo problema, não existe arquivo trabalho.Loja.java
dentro de src
.
Aqui primeiro é compilado qualquer arquivo .java
dentro de trabalho. Ok. Tudo certo.
Depois, tenta executar uma classe trabalho.Loja.java
. Dois pontos:
java
precisa do arquivo Loja.class
e não do arquivo .java.java
não precisa do sufixo .class
, apenas trabalho.Loja
(pacote + classe).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 .
).
É o mesmo caso acima.
Seu único erro aqui foi usar javac
, deveria usar java
.
O mesmo caso acima, mas ele iria procurar pela classe Loja dentro de um pacote trabalh.
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.
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).