Onde salvar meu Package?

13 respostas
J

Pessoal estou com uma duvida, onde criei tres classes e a primeira complia e a segunda da erro dizendo que nao reconhece a primeira que faz parte do mesmo pacote.
Como estou estudando por um livro lá diz que tenho que salvar o package junto com o arquivo classpacth, é correto isso?
Salvei a classe Item e a classe Giftshop em c:/j21work/com/prefect/ecommerce e classe principal em c:\j21work, pq será que está dando erro?

A declaracao do meu pacote é a seguinte:

package com.prefect.ecommerce;

Na classe principal dou um import

import com.prefect.ecommerce.*;

Help?

13 Respostas

G

Passa todos as classes!

Andre_Fonseca

jo83:
Pessoal estou com uma duvida, onde criei tres classes e a primeira complia e a segunda da erro dizendo que nao reconhece a primeira que faz parte do mesmo pacote.
Como estou estudando por um livro lá diz que tenho que salvar o package junto com o arquivo classpacth, é correto isso?

Não entendi o que seria esse “arquivo” classpath, agora se você se refere a variável de ambiente quando você for declarar a variável CLASSPATH utilize o “.” (ponto) que indica para procurar primeiro no diretório local, assim você não precisa se preocupar com isso…

Ficaria algo assim:

.;%JAVA_HOME%\lib;

Onde:

JAVA_HOME = caminho onde está instalado o JDK (sem o /bin)
J

nao, configurar o JDK eu ja configurei!..é uma duvida na construção de package!
Tenho tres classes mas a segunda da erro e nao reconhe a classe Item:

package com.prefect.ecommerce;

import java.util.*;

public class Item implements Comparable{
	private String id;
	private String name;
	private double retail;
	private int quantity;
	private double price;

	Item(String idIn, String nameIn, String retailIn, String quantityIn){
	id= idIn;
	name = nameIn;
	retail= Double.parseDouble(retailIn);
	quantity= Integer.parseInt(quantityIn);

	if(quantity>400)
		price = retail*.5D;
	else if (quantity>200)
		price= retail*.6D;
	else
		price = retail*.7D;
	price=Math.floor(price*100+.5)/100;
	}
public int compareTo(Object obj) {
	Item temp = (Item)obj;
	if(this.price< temp.price)
	return 1;
	else if (this.price>temp.price)
	return -1;
	return 0;
	}
public String getId(){
	return id;
	}
public String getName(){
	return name;
	}
public double getRetail(){
	return retail;
	}
public int getQuantity(){
	return quantity;
	}
public double getPrice(){
	return price;
	}
}
package com.prefect.ecommerce;

import java.util.*;

public class Storefront{
	private LinkedList catalog = new LinkedList();

	public void addItem(String id, String name, String price, String quant){

	Item it = new Item(id,name,price,quant);
	catalog.add(it);
	}
	public Item getItem(int i){
	return (Item)catalog.get(i);
	}
	public int getSize(){
	return catalog.size();
	}
	public void sort(){
	Collections.sort(catalog);
	}
}

Essas duas classes eu salvei em C:\J21work\com\prefect\ecommerce

import com.prefect.ecommerce.*;

public class GiftShop{
	public static void main(String[] arguments){	
	Storefront store = new Storefront();
	store.addItem("co1", "Ju", "9.99", "150");
	store.addItem("co1", "Ju", "9.99", "150");
	store.addItem("co1", "Ju", "9.99", "150");
	store.sort();

	for (int i=0; i < store.getSize(); i++){
	Item show = (Item)store.getItem(i);
	System.out.println("\n Item ID: "+ show.getId()+ 
	"\nName: "+ show.getName()+
	"\nRetail: "+ show.getRetail() + 
	"\nPrice: "+ show.getPrice() +
	"\nQuantity: "+ show.getQuantity());
	}
}
}

E essa ultima salvei em C:\J21work

Parece que a segunda classe nao reconhece a primeira, alguem saberia me dizer porque?

Andre_Fonseca

Olha, aqui pra mim funcionou e está tudo declarado certo, dá uma olhada novamente no CLASSPATH como falei, verifique se o .; está no começo da declaração da variável

No meu caso está assim: (no prompt de comando do windows)

C:\java\com\prefect\ecommerce>echo %CLASSPATH% .;C:\Arquivos de programas\Java\jdk1.5.0_11\lib

Andre_Fonseca

é importante que o diretório atual (ponto “.”) venha antes do $JAVA_HOME$/lib

J

Vc quer dizer que configurei a classpath errado? configurei ela novamente pra o diretório jar mas ainda nao funciona!

J

Eu uso o windows vista e configuracao do CLASSPATH ficou o seguinte:
.;$CLASSPATH%;C:\Program Files\Java\jdk1.6.0_03\lib\tools.jar

e tem outra que é JAVA_HOME que ficou assim
C:\program Files\Java

Nao sei se entendi direito mas pelo que meu amigo falou aí em cima, se crio novos pacotes tenho que mudar essa configuracao ou estou enganada?

Na segunda classe dá erro em Item

Note: Storefront.java uses unchecked or unsafe operations. Note:Recompile with X-lint: uncheched for details. 4 errors

esses 4 erros sao os 4 Item que aparece na classe Storefront.java

cannot find symbol simbol:class Item

Continuo achando que essas duas classes nao estao se exergando só ainda nao sei com resolver!

Andre_Fonseca

jo83:
Eu uso o windows vista e configuracao do CLASSPATH ficou o seguinte:
.;$CLASSPATH%;C:\Program Files\Java\jdk1.6.0_03\lib\tools.jar

e tem outra que é JAVA_HOME que ficou assim
C:\program Files\Java

Tenta colocar o diretório lib todo, fica assim pro seu caso:

JAVA_HOME = C:\program Files\Java CLASSPATH = .;%JAVA_HOME%\lib

As classes estão declaradas corretas, acho que é algo no classpath mesmo…

[]´s

J

poxa Andre…mesmo assim continua dando erro na classe Storefront.java !

Mas me diz uma coisa se eu criei a classe Item.java na mesma pasta que Storefront.java pq a Storefront nao reconhece a item?
O que será que há de errado?

sk2ck

Amigo, se vc utilizar no inicio do arquivo GiftShop.java assim:

import com.prefect.ecommerce.Storefront;
import com.prefect.ecommerce.Item;

e compilar no DOS assim:

javac -d . Item.java

javac -d . Storefront.java

javac GiftShop.java

Parece compilar sem gerar nenhum warning!!!

J

Pelos testes que ja fiz acho que o erro nao se concentra na classe GiftShop.java.
Vamos começar pelo começo…
1- Fiz a classe Item compilei e blz!
2- Fiz a classe Storefront e nao compila da erro indicando a palavra “Item”.
3- A classe GiftShop compila e diz que nao reconhece a classe “Item.java”

Colocando os imports com no explo acima ate compila mas na hora de executar dá erro no metodo “main”.

Esse programinha tirei do livro Aprenda Java em 21 dias mas ainda nao consegui descobri aonde ta o meu erro!
No codigo nao é porque está igualzinho do livro.

Eu acho que a classe Storefront.java nao está enxergando a Item.java só nao sei com faço pra uma reconhecer a outra!

Andre_Fonseca

jo83:
Pelos testes que ja fiz acho que o erro nao se concentra na classe GiftShop.java.
Vamos começar pelo começo…
1- Fiz a classe Item compilei e blz!
2- Fiz a classe Storefront e nao compila da erro indicando a palavra “Item”.
3- A classe GiftShop compila e diz que nao reconhece a classe “Item.java”

Colocando os imports com no explo acima ate compila mas na hora de executar dá erro no metodo “main”.

Esse programinha tirei do livro Aprenda Java em 21 dias mas ainda nao consegui descobri aonde ta o meu erro!
No codigo nao é porque está igualzinho do livro.

Eu acho que a classe Storefront.java nao está enxergando a Item.java só nao sei com faço pra uma reconhecer a outra!

jo83, consegui reproduzir o seu erro aqui, e resolver o problema, faz o seguinte:

Vai no diretório C:\j21work\ e faz javac *.java

O porque disso eu ainda não sei, preciso dar uma olhada depois, estou ocupado agora depois te respondo okey??

J

Valew…agora funcionou!
problema resolvido!!!

Criado 7 de janeiro de 2008
Ultima resposta 8 de jan. de 2008
Respostas 13
Participantes 4