Dúvida cap. 4 apostila Caelum - Java Or. a objetos
20 respostas
R
rafaelczy
Olá pessoal. Até aqui me virei pesquisando no forum. Mas agora travei visto nada ter achado sobre o novo erro (de inistalóide claro - iniciante + bestalóide hehehe).
Bom to seguindo a apostila da caelum no cap 4 pag 32 (java - orientação a objetos).
Ele sugere na apostila pra criar o Programa.java e o Conta.class. O primeiro arq. faz operações em uma conta bancaria e o seguinte (que diz como é feito ) tem as classes ou metodos sei la (it still confuses me guys).
Bom, qdo dou javac Programa.java
retorna:
Programa.java:3: cannot acess Conta
bad class file: .\Conta.class
ilegal start of class file
Cara… o código esta rodando aqui na minha maquina… Estranho…
Talvez voce esteja rodando não a classe que contenha a Main… mas sim a classe Conta…
Ja tentou rodar a Main?
R
rafaelczy
Hey spitfire!
obrigado cara mas realmente continua dando erro mesmo rodando o main c via javac
alem das messagens de erro do prompt que eu citei no post anterior ainda aparece:
please remove or make sure it appears in the correct subdirectory of the classpath
Conta minhaConta
^ :shock:.
So pra lembrar eu estou em:
C:Projeto conta>javac Program.java
rodrigocolasso
rafaelczy:
Hey spitfire!
obrigado cara mas realmente continua dando erro mesmo rodando o main c via javac
alem das messagens de erro do prompt que eu citei no post anterior ainda aparece:
please remove or make sure it appears in the correct subdirectory of the classpath
Conta minhaConta
^ :shock:.
So pra lembrar eu estou em:
C:Projeto conta>javac Program.java
Bom se for isso ta resolvido é só colocar o nome da classe correto “Programa.java”
o javac é o compilador, para rodar é só digitar java Programa.class (se não me engano - faz 3 anos que eu não rodo mais assim ), mas tem que compilar as duas classes.
henriqueluz
Você está importando a classe Conta dentro do seu arquivo Principal.java?
Abs,
R
rafaelczy
Bom vejamos se entendi Rodrigo:
eu tenho:
Programa.java
Conta.class
eu tenho que dar o javac nos dois?
(no meu aprendizado até entao eu só dava javac no main antes)
thank’s men
denisspitfire
Exemplo de como rodar:
Javac Programa.java
Java Programa
Notou que troco para Java depois que eu compilo? E sim, precisa ser compilado os dois programas!!
Javac Programa.java
Javac Conta.java
depois rodar só o Programa
Java Programa
(Isso eu não tenho certeza, então testa ae… faz muito tempo que não faço isso)
R
rafaelczy
spitfire:
Qdo dou javac Programa.java
o prompt retorna:
Programa.java:3: cannot acess Conta
bad class file: .\Conta.class
ilegal start of class file
Please remove or make it appears in the correct subdirectory of the classpath
Qdo dou javac Conta.class o prompt retorna:
javac: invalid flag: Conta.class
usage: javac
use -help for a list of possible options
Henriqueluz:
Cara creio que to importando a Conta.class la no principal sim (Programa.java) . Pode conferir pra mi se estou certo olhando no post inicial onde botei os dois codigos?
thank’s all
henriqueluz
Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí.
ou então coloque:
packagenomeDoSeuPacote;
Caso estejam no mesmo pacote(pasta).
ou caso não estejam:
importnomeDoSeuPacote.Conta;
Abs,
R
rafaelczy
henriqueluz:
Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí.
ou então coloque:
packagenomeDoSeuPacote;
Caso estejam no mesmo pacote(pasta).
ou caso não estejam:
importnomeDoSeuPacote.Conta;
Abs,
Bom Henrique, o que postei lá em cima é o código inteiro (tanto do “Programa.java” qto do “Conta.class”)
Os dois estão dentro da pasta C:\Projeto conta
Sendo assim creio que devo operar a solução 1 que vc citou mas não entendi o seguinte:
packagenomeDoMeuPacote;
não sei que nome ponho.
Além disso coloco o “package” logo após declarar:
spitfire:
Qdo dou javac Programa.java
o prompt retorna:
Programa.java:3: cannot acess Conta
bad class file: .\Conta.class
ilegal start of class file
Please remove or make it appears in the correct subdirectory of the classpath
Qdo dou javac Conta.class o prompt retorna:
javac: invalid flag: Conta.class
usage: javac
use -help for a list of possible options
Henriqueluz:
Cara creio que to importando a Conta.class la no principal sim (Programa.java) . Pode conferir pra mi se estou certo olhando no post inicial onde botei os dois codigos?
thank’s all
cara nao se da Javac em .class só em .java
R
rafaelczy
denisspitfire:
rafaelczy:
spitfire:
Qdo dou javac Programa.java
o prompt retorna:
Programa.java:3: cannot acess Conta
bad class file: .\Conta.class
ilegal start of class file
Please remove or make it appears in the correct subdirectory of the classpath
Qdo dou javac Conta.class o prompt retorna:
javac: invalid flag: Conta.class
usage: javac
use -help for a list of possible options
Henriqueluz:
Cara creio que to importando a Conta.class la no principal sim (Programa.java) . Pode conferir pra mi se estou certo olhando no post inicial onde botei os dois codigos?
thank’s all
cara nao se da Javac em .class só em .java
Bom eu tb acha isso mas só fiz (meio sem crer) pq o Rodrigocolasso sugeriu algo assim mais pra cima. :roll:
R
rafaelczy
rafaelczy:
henriqueluz:
Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí.
ou então coloque:
packagenomeDoSeuPacote;
Caso estejam no mesmo pacote(pasta).
ou caso não estejam:
importnomeDoSeuPacote.Conta;
Abs,
Bom Henrique, o que postei lá em cima é o código inteiro (tanto do “Programa.java” qto do “Conta.class”)
Os dois estão dentro da pasta C:\Projeto conta
Sendo assim creio que devo operar a solução 1 que vc citou mas não entendi o seguinte:
packagenomeDoMeuPacote;
não sei que nome ponho.
Além disso coloco o “package” logo após declarar:
Pessoal continuo travado aqui!! alguém pode me ajudar a importar o meu pacote (não sei como escrever o nome dele e nem em que linha do arquivo.java colocar) conforme a minha dificuldade descrita ai em cima? Valeu !
henriqueluz
Oi.
Tá errado, a instrução package deve ser a primeira linha do código.
Faz isso ai!
R
rafaelczy
henriqueluz:
Oi.
Tá errado, a instrução package deve ser a primeira linha do código.
Faz isso ai!
Certo, coloco na primeira linha de código do arquivo “programa.java” mas e o nome do pacote? Suponho que é algo que eu tenho declarado em “Conta.class”, mas ainda não sei que nome colocar. olhando meu código tu pode me dizer?
thank’s friend!
henriqueluz
Cara me diz como está sua estrutura de pastas/arquivos.
Voce ta usando alguma IDE?
Abraço
R
rafaelczy
Valeu a ajuda cara!
Bom minha estrutura de pastas é a seguinte:
Tenho apenas dois arquivos - Programa.java e Conta.class
Ambos estão em C:\Projeto conta
Tudo certo com a minha estrutura de pastas?
Não to usando IDE nehuma ainda pq a apostila aconselha no início usar o bloco de notas e rodar no prompt do DOS.
R
rafaelczy
Bom pessoal, recebi uma dica de que o erro poderia ser pelo fato de que a pasta que tem meus dois arquivos ser nomeada como:
C:\Projeto Conta
O Problema é que dentro dela tem os dois arquivos que criei e um deles (.class) parece ter algun conflito de nome com o nome da pasta.
Dentro dela são os arquivos seguintes:
Programa.java
Conta.class
dai mudei o nome da pasta pra C:\Projeto bancario
Agora quando eu tento compilar via javac o “Programa.java” retorna o erro:
cannot access Conta: .\Conta.class
ilegal start of class.file
Please remove or make sure it appears in the correct subdirectory of the classpath
Segue ai os dois arquivos de novo
Programa.java
Aqui o Conta.class
à propósito: O Henrriqueluz tinha dito pra mim que o problema era que eu nao tinha importado o pacote correto no “Programa.java”.
Recebi outra informação de nada disso era necessário porque os dois únicos arquivos do projeto já estão dentro da mesma pasta.
henriqueluz
Poisé rafael. O problema é que muitos aqui, e eu me incluo, se utilizam de IDE e quase nunca compilam na “mão” e acabamos por perder esse conhecimento, já que a IDE se responsabiliza por gerenciar seus pacotes/pastas, compilar e rodar suas classes corretamente.
Vou dá uma pesquisada sobre isso e assim que souber algo posto aqui pra você.
Abração
R
rafaelczy
Sua colocação Henrrique, me faz pensar que o conselho da apostila me parece bem fundado: Rodar tudo na mão no início.
interessante como nos tornamos dependentes das ultra facilitadoras IDEs não é mesmo cara?!!
:shock:
R
rafaelczy
Bom galera, graças ao meu irmão que PHP programmer recebi a resposta:
Eu havia criado dois arquivos sendo:
Programa.java
Conta.class
Meu erro foi criar os atributos da classe Conta e salvar num arq. “.class” qdo eu deveria salavar num arq. “.java”
Explicando:
Ao compilar Programa.java o “java c” procurava a classe conta.java e não achava.
Dai a menssagem:
Cannot find Conta
Bad class file
os arquivos .class são criados automaticamente pelo compilador com as especificação pro SO q esta servido de base poder ler e rodar.
(Daí a virtude do Java de rodar em qualquer ambiente)
Por isso aos inistalóides como eu (iniciante + bestalóide) nunca salavem nada em “.class”