Compilar com -classpath e -d

Boas pessoal nao to conseguindo sair de uma erro básico !
Estou a tentar realizar um exercicio d´um livro e tenho o seguinte senario:

Estou com o seguinte problema, estou a tentar compilar o meu .java file com o seguinte comando :

C:\MyProjects\beerV1>javac -classpath C:\Programas\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar:classes:. -d classes src\com\example\web\BeerSelect.java

Mas estou a receber o seguinte erro :

C:\MyProjects\beerV1>javac -classpath C:\Programas\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar:classes:. -d classes src\com\example\web\BeerSelect.java

javac: invalid flag: Software
Usage: javac <options> <source files>

where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are u
sed
  -classpath <path>          Specify where to find user class files
  -cp <path>                 Specify where to find user class files
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -d <directory>             Specify where to place generated class files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release

  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system

O meu objectivo é : compilar este servlet (.java) com o jar file (servlet-api.jar) que esta na pasta lib do tomcat e colocar o fiheiro (.class)que ele gerou na directoria que indiquei no comando.

Nºao to conseguindo perceber porque ele na ta compilando !

Agradeço desde ja a ajuda !

Olá LuisClaudio,

No Windows, coloque todo endereço que tiver um espaço entre aspas:

C:\MyProjects\beerV1>javac -classpath "C:\Programas\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar:classes:." -d classes src\com\example\web\BeerSelect.java

Até mais, :wink:

Boas, executou mas devolveu me os seguintes erros :


C:\MyProjects\beerV1>javac -classpath "C:\Programas\Apache Software Foundation\T
omcat 5.5\common\lib\servlet-api.jar:classes:." -d classes src\com\example\web\B
eerselect.java
src\com\example\web\Beerselect.java:3: package javax.servlet does not exist
import javax.servlet.*;
^
src\com\example\web\Beerselect.java:4: package javax.servlet.http does not exist

import javax.servlet.http.*;
^
src\com\example\web\Beerselect.java:7: cannot find symbol
symbol: class HttpServlet
public class BeerSelect extends HttpServlet{
                                ^
src\com\example\web\Beerselect.java:9: cannot find symbol
symbol  : class HttpServletRequest
location: class com.example.web.BeerSelect
        public void doPost(HttpServletRequest request,
                           ^
src\com\example\web\Beerselect.java:10: cannot find symbol
symbol  : class HttpServletResponse
location: class com.example.web.BeerSelect
                                        HttpServletResponse response)throws IOEx
ception, ServletException{
                                        ^
src\com\example\web\Beerselect.java:10: cannot find symbol
symbol  : class ServletException
location: class com.example.web.BeerSelect
                                        HttpServletResponse response)throws IOEx
ception, ServletException{

         ^
src\com\example\web\Beerselect.java:14: cannot find symbol
symbol  : class PrinterWriter
location: class com.example.web.BeerSelect
                PrinterWriter out = response.getWriter();
                ^
7 errors

O problema esta nos jar files que ele não encontra, pode me explcar como faço para que ele carregue estes jar files (servlet-api.jar)

Olá LuisClaudio,

No Windows, o separador de endereços é o ponto-e-vírgula, e não os dois-pontos. Ao invês de você separar com : (entre o servlet-api.jar e a sua pasta), separe com ;

Até mais, :wink:

Valeu ! alguem me pode indicar aonde posso obter mais informações sobre como usar este recurso, ou seja compilar desta forma ? queria perceber bem como isso funciona !

Obrigado desde ja !

estou habituado a usar o IDE (Netbeans) e agora estoua fazer uns exercicio para a prova de SCWCD e tenho que fazer isso na unha !

Olá LuisClaudio,

Caso o “na unha” ainda lhe permita usar o Ant, é uma ótima ferramenta pra você experimentar nos casos que você não pode (ou não quer) utilizar uma IDE pra gerenciar o processo de desenvolvimento. Na verdade, o Maven é mais apropriado para isso, só que o Ant é mais customizável (e mais trabalhoso).

Até mais, :wink:

Meu amigo agora estou com um erro relacionado om impror de pacotes :

Desta vez eu nao consigo fazer o import de um package que criei e
estou a receber o seguinte erro :

C:\MyProjects\beerV1>javac -classpath "C:\Programas\Apache Software Foundation\T
omcat 5.5\common\lib\servlet-api.jar; classes" -d classes src\com\example\model\
BeerExpert.java
src\com\example\model\BeerExpert.java:3: package com.example.web does not exist
import com.example.web.*;
^
Note: src\com\example\model\BeerExpert.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.
1 error

Ou seja náo consigo fazer o import do com.example.web que contem uma classe chamada BeerSelect e que por sua vez tem um metodo chamado doPost eis o codigo da class :

//Class que import o pacote

package com.example.model;

import com.example.web.*; // TA DANDO ERRO AQUI
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);
	}
	
}
//Class que tem o metodo doPost que quero usar na outra class

package com.example.web;


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 Selection Advice<br>");
		String c = request.getParameter("color");
		
		
			out.print("<br>Apanha a cerveja de cor : " + c);
		
	
				    
	} 
}

obrigado desde ja !