Servlet com java 17

Estou tentando compilar o seguinte código:

package com.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

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.println("<br>Got beer color " + c);

    }
}

Em troca o java 17 me diz que não tem os pacotes que eu importo com exceção do pacote java.io.

Sou novo estudando internet e não conheço a versão 17 do java. Onde está o meu erro?

Abaixo vou mostrar o print de uma tela, resultado da compilação:

Obrigado pela atenção e ajuda,
Ronaldo

Mas pq vc ta tentando compilar manualmente? Pra compilar manualmente, vc precisa montar o MANIFEST do jar, e fazer tudo na mão. Não faz sentido.

1 curtida

Qual versão do Tomcat vc está usando? A partir da versão 10 o Tomcat suporta o Servlet 5.0 e o pacote javax.servlet foi substituido por jakarta.servlet.

Vc tem que ver se está usando as versões corretas para que tudo funcione corretamente.

1 curtida

O livro que estou usando recomenda usar um editor simples e fazer na mão para praticar.

A versão é apache-tomcat-9.0.60.

E a versão do servlet-api?

1 curtida

É a mesma versão do tomcat.

Não pode ser, a última versão da API é a 6.0.

Me mostra o link de onde vc baixou o servlet-api.jar.

Para o Tomcat 9, vc deveria baixar a versão 4.0.

1 curtida

Não tenho mais o link mas veio junto com o tomcat então agredito que sejam compativeis.

Entendi, vc tem razão, baixei aqui para fazer uns testes, se eu descobrir ao novo, volto aqui.

1 curtida

Ronaldo, eu estou instalando o Windows aqui, então ainda não consigo testar, mas olhando seu comando com mais atencão, acredito que o problema é que vc usou “:” para separar os caminhos do classpath.

No Windows a gente não usa “:” para separar os caminhos, a gente usa “;”.

Experimenta fazer esta mundanca para ver se vc consegue compilar.

1 curtida

Você pode escrever a linha para mim pois eu usei vários dois pontos.

O separador de caminhos do Windows é ";" então você vai ter que substituir cada ":" por ";".
Simples assim.

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

Consegui instalar aqui e usei este comando.

1 curtida

Sim, então não digo c: e sim c;

Engraçadinho, se você não sabe diferenciar um nome de unidade de um separador de caminho, então recomendo que aprenda a utilizar o seu sistema operacional antes de aprender a programar.

1 curtida

Veja como está no comando que coloquei no arquivo compila2.bat:

cd c:\Program Files\Eclipse Adoptium\jdk-11.0.14.101-hotspot\bin
javac -version

javac -classpath c:/apache-tomcat-9.0.60/bin/servlet-api.jar;classes:. -d classes c:/users/usuario/webjava/MyProjects/beerV1/src/com/example/web/BeerSelect.java

Está correto?

Não, entre o diretório "classes" e o diretório ".", ainda tem um ":" perdido.

1 curtida

Corrigi mas continua sem reconhecer o arquivo jar. Dá o mesmo erro do primeiro print que eu mandei. Não sei o que fazer.

Qual jar?

Provavelmente você está executando as linhas de comando a partir do diretório errado.

Na sua postagem você está executando dentro do diretório bin do Java, não é lá que estão os fontes do seu projeto.

Você tem que adicionar a pasta src do seu projeto ao compilar seus fontes.

1 curtida