Dúvida cap. 4 apostila Caelum - Java Or. a objetos

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

Abaixo o codigo Programa.java

class Programa {
	public static void main (String[] args){
		Conta minhaConta;
		minhaConta = new Conta();
		
		minhaConta.dono  = "Duke";
		minhaConta.saldo = 1000.0;

		System.out.println("Saldo atual" + minhaConta.saldo);
		
		minhaConta.saca(200);

		minhaConta.deposita(500);
		System.out.println(minhaConta.saldo);
	}
}

abaixo o Conta.class

class Conta {
	int numero;
	String dono;
	double saldo;
	double limite;

		void saca (double quantidade){
			double novoSaldo = this.saldo - quantidade;
			this.saldo = novoSaldo;
		}

		void deposita(double quantidade){
			this.saldo += quantidade;
		}
}

PS: Li o “Iniciante: Antes de postar leia” - se eu tiver esqucido alguma norma agradeço a lembrança
abração ai galera!

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?

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

[quote=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[/quote]

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 :slight_smile: ), mas tem que compilar as duas classes.

Você está importando a classe Conta dentro do seu arquivo Principal.java?
Abs,

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

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)

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

Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí. :slight_smile:

ou então coloque:

package nomeDoSeuPacote;

Caso estejam no mesmo pacote(pasta).

ou caso não estejam:

import nomeDoSeuPacote.Conta;

Abs,

[quote=henriqueluz]Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí. :slight_smile:

ou então coloque:

package nomeDoSeuPacote;

Caso estejam no mesmo pacote(pasta).

ou caso não estejam:

import nomeDoSeuPacote.Conta;

Abs,[/quote]

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:

package nomeDoMeuPacote;

não sei que nome ponho.
Além disso coloco o “package” logo após declarar:

public static void main (String[] args) { 
package nomeDoMeuPacote;  ...}

? certo?

[quote=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[/quote]
cara nao se da Javac em .class só em .java

[quote=denisspitfire][quote=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[/quote]
cara nao se da Javac em .class só em .java[/quote]

Bom eu tb acha isso mas só fiz (meio sem crer) pq o Rodrigocolasso sugeriu algo assim mais pra cima. :roll:

[quote=rafaelczy][quote=henriqueluz]Quando você postou o código da classe Programa não tem nenhum import aparecendo.
Cola o arquivo todo aí. :slight_smile:

ou então coloque:

package nomeDoSeuPacote;

Caso estejam no mesmo pacote(pasta).

ou caso não estejam:

import nomeDoSeuPacote.Conta;

Abs,[/quote]

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:

package nomeDoMeuPacote;

não sei que nome ponho.
Além disso coloco o “package” logo após declarar:

public static void main (String[] args) { 
package nomeDoMeuPacote;  ...}

? certo?[/quote]

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 !

Oi.

Tá errado, a instrução package deve ser a primeira linha do código.
Faz isso ai!

[quote=henriqueluz]Oi.

Tá errado, a instrução package deve ser a primeira linha do código.
Faz isso ai![/quote]

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!

Cara me diz como está sua estrutura de pastas/arquivos.
Voce ta usando alguma IDE?

Abraço

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.

:smiley:

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.

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

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: