Alguns problemas com compilação usando javac no DOS

11 respostas
T

Pessoal, estou tendo alguns problemas.

Estou fazendo um curso de JSP e Servlets e no curso n se usa nenhuma IDE, semplesmente Notepad, javac e Tomcat.

E estou tendo os seguintes problemas, se alguem puder me ajudar.

Essa é a estrutura do meu projeto:

[img]http://img372.imageshack.us/img372/7459/projetotn7.jpg[/img]

E essa é a estrutura do Tomcat:

[img]http://img385.imageshack.us/img385/6213/tomcatvj7.jpg[/img]

Em C:\Tomcat\webapps\Beer-v1\WEB-INF tenho o arquivo web.xml, com o codigo:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4">

   `<servlet>
	`<servlet-name>Ch3 Beer</servlet-name>
	`<servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>

    <servlet-mapping>
	<servlet-name>Ch3 Beer</servlet-name>
	`<url-pattern>/SelectBeer.do</url-pattern>
    </servlet-mapping>

</web-app>

Dentro de F:\Meu projeto\BeerV1\src\com\example\web tem o BeerSelect.java com o codigo:

package com.example.web;

import com.example.model.*;
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 out = response.getWriter();
			   out.println("Beer Select Advise<br>");
		String c = request.getParameter("color");
			BeerExpert be = new BeerExpert();
			List result = be.getBrands(c);
			Iterator it = result.iterator();
			while(it.hasNext()) {
				out.print("<br>try: " + it.next());
			} 	
	}
}

E dentro de F:\Meu projeto\BeerV1\src\com\example\model tem o BeerExpert.java com o codigo:

package com.example.model;

import java.util.*;

public class BeerExpert {

	public List getBrands(String color){

		List brands = new ArrayList();

		if(color.equals("amber")) {
			
			brands.add("Jack Amber");
			brands.add("Red Moose");
			
		}else {
			
			brands.add("Jail Pale");
			brands.add("Gout Stout");
			
		}
		 return brands;
	}	
}

Esse, qdo. eu compilo da essa msg:

F:\Meu projeto\BeerV1>javac -d classes src\com\example\model\BeerExpert.java Note: src\com\example\model\BeerExpert.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

No que eu recompilo com o -Xlint e aparece isso:

F:\Meu projeto\BeerV1>javac -Xlint -d classes src\com\example\model\BeerExpert.java src\com\example\model\BeerExpert.java:13: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List brands.add("Jack Amber"); ^ src\com\example\model\BeerExpert.java:14: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List brands.add("Red Moose"); ^ src\com\example\model\BeerExpert.java:18: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List brands.add("Jail Pale"); ^ src\com\example\model\BeerExpert.java:19: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List brands.add("Gout Stout"); ^ 4 warnings

Sera que isso pode estar causando o problema?

E dentro do F:\Meu projeto\BeerV1\classes\com\example\model e do F:\Meu projeto\BeerV1\classes\com\example\web tenho o BeerExpert.class e BeerSelect.class, respectivamente.

Qdo. vou compilar no DOS, com o comando
javac -classpath c:/Tomcat/common/lib/servlet-api.jar -d classes src/com/example/web/BeerSelect.java
Da esses 3 erros:

src/com/example/web/BeerSelect.java:3: package com.example.model does not exist import com.example.model.*; ^ src/com/example/web/BeerSelect.java:20: cannot find symbol symbol : class BeerExpert location: class com.example.web.BeerSelect BeerExpert be = new BeerExpert(); ^ src/com/example/web/BeerSelect.java:20: cannot find symbol symbol : class BeerExpert location: class com.example.web.BeerSelect BeerExpert be = new BeerExpert();

Eu sei que ficou BEM grande, e se alguem tiver paciencia, e puder me dar uma ajuda, eu agradeço muito.

Valeu pessoal!

11 Respostas

J

Se você está usando Java 5, esta mensagem está aparecendo porque seu código não usa generics. O compilador está te recomendando que não use a classe List de forma “crua” (que seria armazenando um Object, em vez de armazenar objetos da classe específica). Não é um erro, é só um alerta, ainda assim seu programa deve rodar. No entando, para ficar mais elegante você pode definir seu Objeto List como generic. Mais informações em:
http://www.ime.uerj.br/javatutor/java/generics/index.html

J

No segundo erro, o compilador não reconhece as classes porque não está encontrando o pacote. O pacote está sendo procurado a partir de src/com/example/web (ou seja src/com/example/web/com/example…). Tenta compilar estando no diretório classes e passando o caminho até a classe que você quer compilar. Poste os resultado aí. Se alguém tiver uma maneira mais bonita de fazer isso, compartilhe porque aí eu aprendo também. Já tive um problema parecido e configurar a classpath não adiantou.

T

Opa, muito obrigado pela ajuda.

mas tipo, a estrutura de diretorios ta como eu coloquei no post, e com os codigos tb. Ta faltando alguma coisa?

J

Opa! Você não deve estar no diretório classes, mas no src e passar o caminho tipo javac com\example\model\NomeClasse.java

T

Eu estava no F:\Meu projeto\BeerV1>

E passava o comando:
javac -classpath c:/Tomcat/common/lib/servlet-api.jar -d classes src/com/example/web/BeerSelect.java

E mesmo estando no F:\Meu projeto\BeerV1\src> e passando o comando
javac -classpath c:/Tomcat/common/lib/servlet-api.jar -d classes com/example/web/BeerSelect.java

Da exatamente o mesmo erro.

D

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

– Utilizando tomcat 6.0

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

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

– No caso do TomCat 5 o comando fica como abaixo:
[color=blue]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[/color]
Observer que a localização do arquivo servlet-api.jar é diferente.

B

Boa tarde Amigo, eu estava com exatamente o mesmo problema que você e segui os conselhos do deygbs (com alguns ajustes) e funcionou sim!

No seu caso você terá de colocar:

[size=18][color=blue]javac -classpath “F:\Meu projeto\BeerV1\src;c:/Tomcat/common/lib/servlet-api.jar” -d classes src/com/example/web/BeerSelect.java
[/color][/size]

Abração ae!

R

Bom Dia Galera,

Tenho que criar uma classe para chamar um modelo chamado BeerExpert.

O codigo do modelo eh esse:

package com.example.model;
import java.util.*;

public class BeerExpert
(
public List getBrands(String color)
{
List brands = new Arraylist();
if (color.equals("amber"))
{
brands.add("Jack Amber");
brands.add("Red Moose");
}
else
{
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
returns(brands);
}
}

Eu Devo criar a classe no DD certo? (que no meu caso se chama web.xml)
Eu modifiquei o arquivo e o mesmo ficou assim:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">


`<servlet>
`<servlet-name> Ch3 Beer </servlet-name>
`<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
`<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>

`<servlet>
`<servlet-name> Ch4 Beer </servlet-name>
`<servlet-class>com.example.model.BeerExpert</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>Ch4 Beer</servlet-name>
`<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>

</web-app>

O erro que aparece quando mando compilar o arquivo BeerExpert eh o seguinte:

C:\MyProjects\BeerV1>javac -classpath C:\Tomcat\common\lib\servlet-api.jar;class
es;. -d classes src\com\example\model\BeerExpert.java
src\com\example\model\BeerExpert.java:4: ‘{’ expected
public class BeerExpert
^
1 error

O que eu estou fazendo de errado?

Agradeço a ajuda.

R

Encontrei o erro do parenteses,

Agora quando eu Compilo aparece o seguinte erro:

C:\MyProjects\BeerV1>javac -classpath c:\tomcat\common\lib\servlet-api.jar;class
es;. -d classes src\com\example\model\beerexpert.java
src\com\example\model\beerexpert.java:9: cannot find symbol
symbol  : class Arraylist
location: class com.example.model.BeerExpert
              List brands = new Arraylist();
                                ^
src\com\example\model\beerexpert.java:20: cannot find symbol
symbol  : method returns(java.util.List)
location: class com.example.model.BeerExpert
              returns(brands);
              ^
Note: src\com\example\model\beerexpert.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.
2 errors

O que estou fazendo de errado?

M

Help,

pelo amor de Deus…alguém me ajuda.

C:\MyProjects\beerV1\src\com\example\model\BeerExpert.java
C:\MyProjects\beerV1\src\com\example\web\BeerSelect.java
C:\Tomcat

BeerExpert.java

package com.example.model;
import java.util.*;

public class BeerExpert{

public List getBrands(String color){

List brands = new ArrayList();

if(color.equals(amber)){

brands.add(Jack Amber);

brands.add(Red Moose);

}

else{

brands.add(Jail Pale Ale);

brands.add(Gout Stout);

}

return(brands);

}

}

Classe:

package com.example.web;

import com.example.model.<em>;

import javax.servlet.</em>;

import javax.servlet.http.<em>;

import <a href="http://java.io">java.io</a>.</em>;
public class BeerSelect extends HttpServlet{

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{

String c = request.getParameter(color);

BeerExpert be = new BeerExpert();

List result = be.getBrands©;

response.setContentType(text/html);

PrintWriter out=response.getWriter();

out.println(Beer Selection Advice
);
Iterator it = result.iterator();
		while(it.hasnext()){
			out.print("<br>try: " + it.next());
		}			
}

}

1 - Se eu tento compilar assim:.

javac -classpath “C:\MyProjects\beerV1\src;c:/tomcat/common/lib/servlet-api.jar” -d classes src/com/example/web/BeerSelect.java

3: package javax.servlet does not exist

import javax.servlet.<em>;

^

src\com\example\web\BeerSelect.java:4: package javax.servlet.http does not exist

import javax.servlet.http.</em>;

^

src\com\example\web\BeerSelect.java:7: cannot find symbol

symbol: class HttpServlet

public class BeerSelect extends HttpServlet{

^

src\com\example\web\BeerSelect.java:8: cannot find symbol

symbol  : class HttpServletRequest

location: class com.example.web.BeerSelect

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{

^

src\com\example\web\BeerSelect.java:8: cannot find symbol

symbol  : class HttpServletResponse

location: class com.example.web.BeerSelect

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{

^

src\com\example\web\BeerSelect.java:8: cannot find symbol

symbol  : class ServletException

location: class com.example.web.BeerSelect

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{

^

src\com\example\web\BeerSelect.java:11: cannot find symbol

symbol  : class List

location: class com.example.web.BeerSelect

List result = be.getBrands©;

^

src\com\example\web\BeerSelect.java:16: cannot find symbol

symbol  : class Iterator

location: class com.example.web.BeerSelect

Iterator it = result.iterator();

^

Note: C:\MyProjects\beerV1\src\com\example\model\BeerExpert.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

8 errors

2 - Ou se eu tento compilar assim:

javac -classpath /tomcat/lib/servlet-api.jar;classes:. -d classes src/com/example/web/BeerSelect.java

2: package com.example.model does not exist

import com.example.model.*;

^

src\com\example\web\BeerSelect.java:10: cannot find symbol

symbol  : class BeerExpert

location: class com.example.web.BeerSelect

BeerExpert be = new BeerExpert();

^

src\com\example\web\BeerSelect.java:10: cannot find symbol

symbol  : class BeerExpert

location: class com.example.web.BeerSelect

BeerExpert be = new BeerExpert();

^

src\com\example\web\BeerSelect.java:11: cannot find symbol

symbol  : class List

location: class com.example.web.BeerSelect

List result = be.getBrands©;

^

src\com\example\web\BeerSelect.java:16: cannot find symbol

symbol  : class Iterator

location: class com.example.web.BeerSelect

Iterator it = result.iterator();

^

5 errors

Socorrooooooooo

:?

leo.alvesneuwald

Nossa, esse post resolveu exatamente a dúvida que eu estava. Porra, Foda =]

mraguga, acho que deve ter encontrado a solução, mas é exatamente o que foi postado acima, ou seja, informe os parâmetros de onde está o src da classe que está sendo importada.

C:\qualquerlugar> javac -classpath "C:\MyProjects\[b]beerV1\src[/b];C:\apache\lib\[b]servlet-api.jar[/b]" -
Criado 2 de dezembro de 2006
Ultima resposta 28 de jul. de 2011
Respostas 11
Participantes 7