Duvida na importacao

olá pessoal,

to tendo alguns problemas com importacao de classes vejam a estrutura:

-beerV1/classes: aqui está o .class
e dentro tem: com.beer

-beerV1/src: aqui está o .java

codigos:

package com.beer;
import java.util.*;
public class BeerExpert{
	public List getBrands(String color){
		List brands = new ArrayList();
		if (color.equals("ämber"))
		{
			brands.add("Jack Amber"); 
			brands.add("Red Moose");
		}
	else{
		brands.add("Jail Pale Ale"); 
		brands.add("Gout Stout"); 
	}
	return (brands);
	}
}
import com.beer.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class BeerSelect extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();
			pw.println("Beer Selection advice<br>"); 
		String c = request.getParameter("color"); 
		BeerExpert be = new BeerExpert();
		List result = be.getBrands(c);
		Iterator it = result.iterator(); 
		while(it.hasNext()){
			pw.print("<br> try: " + it.next()); 
		}
		
	}
	
}

Na tentativa ele nao compila por nao encontrar a class BeerExpert.
Como posso resolver? Ja tentei N formas e nada…

sempre mim fico confuso como fazer esse processo na mão…

flw :slight_smile:

Não falta informar o pacote na classe BeerSelect?

[code]package com.beer; // <<<<<<----------------
import com.beer.;
import javax.servlet.
;
import javax.servlet.http.;
import java.io.
;
import java.util.*;

public class BeerSelect extends HttpServlet { [/code]

não se ele ja importa o pacote com.beer, então não é necessario estar no mesmo pacote …

exato, alguem tem uma solucao?

nunca vi algo mais chato que fazer isso pelo prompt hehe, quem puder dar esse help :smiley:

[quote=Lavieri]não se ele ja importa o pacote com.beer, então não é necessario estar no mesmo pacote …

[/quote]

Tem razão, não vi o import…

LPJava, São projetos diferentes?

O NetBeans sei que não enxerga projetos diferentes, ou estou errado?
Lembro que o eclipse enxergava tudo que estava dentro da mesma pasta do projeto.

Posta o comando que você está usando para compilar. Assim fica mais fácil te ajudar.
Bem, eu já fiz esse exemplo do HeadFirst. Eu conferi no meu código e eu fiz assim:

  |- src
        |- com
             |- beer
                   |-model
                         |- BeerExpert.java
                   |-web
                         |-BeerExample.java

Aí pra compilar você faz assim:

$ cd src

/src $ javac -cp <classes-que-vc-precisa> -d . *.java

Batata!

no eclipse ta tranquilo…
nao sao projetos diferentes nao, apenas os packages. a questao que nao consigo importar um class que está em um package do mesmo projeto.

Você vai ver que colocar os fontes em pacotes (e não colocá-los no pacote padrão) ajuda a organizar o código e pra compilar na mão. Também não esqueça de colocar o diretório atual (diretório ponto “.”) no final do se classpath.

Aposto 1.000 coca-colas que falta o diretório “.” (ponto) no final do classpath.

o . ponto no classpath ja está… agora nao posso declarar minha classe sem package?

esse é meu class path:

Hmmmm … cara, posta o comando completo que você está usando e a mensagem de erro …

simples ele nao encontra a class que foi importada, e nao compila…

em qual diretório vc colocou o BeerExample.java ?

beerV1/classes: aqui está o .class
e dentro tem: com.beer

-beerV1/src: aqui está o .java

Hmmm … acho que é isso então, coloca o "beerV1/classes " no classpath. Provavelmente agora vai.

Trata-se do capitulo 3 do livro Use a Cabeça! Servlets e JSP
[java-deyg]

[color=blue]-- Utilizando tomcat 6.0 [/color]

Compila a classe com.example.web.BeerSelect com a sua dependencia da classe com.example.model.BeerExpert.
Adicionando ‘C:\EstudoJava\beerV1\src;’ (sem as aspas simples) ao classpath o compilador encontra a dependencia com.example.model.BeerExpert.

–COMANDO
javac -classpath “C:\EstudoJava\beerV1\src;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;classes:.” -d classes src\com\example\web\BeerSelect.java

Substitua a pasta EstudoJava no caminho a cima para se adequar ao local do seu beerV1.

[color=darkblue]-- No caso do TomCat 5 o comando fica como abaixo: [/color]
javac -classpath “C:\EstudoJava\beerV1\src;C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar;classes:.” -d classes src\com\example\web\BeerSelect.java
Observer que a localização do arquivo servlet-api.jar é diferente.

Lembrete:
o javac na questao acima deve ser executado a partir de c:\estudojava\beerv1

cd estudojava\beerv1