Itau Shopline -> package javax.servlet does not exist -> import javax.servlet.*;

13 respostas
javaphp
M

Olá pessoal, este é minha primeira tarefa em JAVA e LINUX. Eu não conhecia nada sobre as linguagens, mas tenho que instalar o Itaú Shopline num cloud dedicado ubuntu. O Itau não me deu um suporte específico e nem meu servidor de hospedagem. Estou tentando na raça, mas tive problemas. So server, instalei o pacote JRE, JDK e tomcat7. Startei normalmente o tomcat7.

Meu problema está ao compilar o arquivo itau.java. Ao tentar:
javac itau.java

Tenho o retorno do seguinte erro:

Erro: package javax.servlet does not exist

Neste arquivo itau.java, as primeiras linhas são:

import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Itau.Itaucripto;

Consultei a pasta do tomcat7 pelo código
cd /usr/share/tomcat7/lib

e na pasta existe o conteúdo:
annotations-api.jar  catalina.jar      jasper-el.jar    tomcat-api.jar      tomcat-i18n-ja.jar
catalina-ant.jar     commons-dbcp.jar  jasper.jar       tomcat-coyote.jar   tomcat-util.jar
catalina-ha.jar      commons-pool.jar  jsp-api.jar      tomcat-i18n-es.jar
catalina-tribes.jar  el-api.jar        servlet-api.jar  tomcat-i18n-fr.jar

Qual é a sintaxe correta que devo passar para importar os arquivos abaixo? Imagino que seja algo relacionado ao caminho dos diretórios.

Tentei especificar o caminho do “servlet-api.jar” com a sintaxe abaixo:
javac -cp “/usr/share/tomcat7/lib/servlet-api.jar” itau.java

Mas tive o retorno do seguinte erro:
package Itau does not exist
import Itau.Itaucripto;
           ^
ServletCriptoShopline.java:68: cannot find symbol
symbol  : class Itaucripto
location: class ServletCriptoShopline
Itaucripto cripto = new Itaucripto();
^
ServletCriptoShopline.java:68: cannot find symbol
symbol  : class Itaucripto
location: class ServletCriptoShopline
Itaucripto cripto = new Itaucripto();

Alguém pode me ajudar? Agradeço imensamente desde já.

13 Respostas

I

Esse sfotware é standalone ou web? O tomcat é um web container, ou seja, pra vc subir a aplicacao usando o tomcat, vc joga um .war no webapps, da forma que vc está tentando fazer, executando algum jar, nao precisa de um tomcat, por dois motivos: ou ele é um aplicativo nao-web, ou tem um tomcat embarcado.

Na documentacao nao explica como subir ele?

E

Vamos do início, você falou de compilar, o Tomcat não compila, apenas executa algo que já foi compilado… Você está tentando compilar uma classe que utiliza dependências externas (os arquivos .jar) sem especificar onde o compilador vai encontrar as classes que precisa (dê uma pesquisada sobre o parâmetro -cp do javac [0])…

[0] http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

M

Olá @igor_ks, obrigado pela resposta. É um ambiente web. A documentação me informa somente:

( 8 ) Após a edição, salvar com extensão Java, compilá-lo (javac .java)
e colocá-lo no diretório definido como repositório de servlets.

M

Olá @Eldius, obrigado pelo esclarecimento. Tentei especificar o caminho do “servlet-api.jar” com a sintaxe abaixo:
javac -cp “/usr/share/tomcat7/lib/servlet-api.jar” itau.java

Imaginei que isto seria suficiente. Não fui mais informado do erro: package javax.servlet does not exist, porém surgiu um novo erro, abaixo:

package Itau does not exist

import Itau.Itaucripto;

^

ServletCriptoShopline.java:68: cannot find symbol

symbol : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();

^

ServletCriptoShopline.java:68: cannot find symbol

symbol : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();
E

Você tem que colocar todas as dependências nesse classpath (se não me falha a memória você separa os arquivos com ‘:’)…
Esse pacote “Itau.Itaucripto” deve estar em um arquivo .jar, ele também tem que ser adicionado nesse parâmetro…

Algo tipo:

javac -cp /usr/share/tomcat7/lib/servlet-api.jar:/usr/share/tomcat7/lib/outro-arquivo.jar
M

@Eldius Esta foi uma boa dica! O pacote Itau.Itaucripto é uma classe que o Shopline me fornece. O arquivo está no diretório Itau. O meu JAVA está na raiz. Tentei o comando abaixo:

javac -cp /usr/share/tomcat7/lib/servlet-api.jar:/itau.java
E tive o retorno do erro: javac: no source files

O outro arquivo não está dentro de um jar, é um arquivo JAVA que está no diretório raiz. Tentei:

javac itau.java -cp /usr/share/tomcat7/lib/servlet-api.jar

E tive os mesmos erros retornados antes:

<strong>itau.java:6: package Itau does not exist</strong>

<strong>import Itau.Itaucripto;</strong>

**           ^**

<strong>itau.java:68: cannot find symbol</strong>

<strong>symbol  : class Itaucripto</strong>

<strong>location: class ServletCriptoShopline</strong>

<strong>Itaucripto cripto = new Itaucripto();</strong>

<strong>^</strong>

<strong>itau.java:68: cannot find symbol</strong>

<strong>symbol  : class Itaucripto</strong>

<strong>location: class ServletCriptoShopline</strong>

<strong>Itaucripto cripto = new Itaucripto();</strong>
E

Então o arquivo da classe que o Itaú te disponibilizou deve ter o mesmo nome da classe (ele diferencia maiúsculas de minúsculas) e o pacote tem que ter o mesmo nome das pastas (no seu caso acredito que seja Itau, mas verifique na primeira linha do arquivo da sua classe do ItauCripto, onde tem a palavra chave package e não se esqueça de que também diferencia maiúsculas de minúsculas)… E a sua classe itau (onde tem o método main) tem que ter o mesmo nome do arquivo também…

O classpath (parâmetro -cp) é apenas para adicionar bibliotecas externas (já compiladas), como é o caso da API de Servlets (arquivo servlet-api.jar), as suas classes entram como “parâmetro comum”, ou o arquivo a ser compilado, (nunca compilei passando mais de um arquivo como parâmetro, então não sei dizer se teria como fazer desta forma)…

Verificando o que eu disse anteriormente (os arquivos nos seus devidos lugares e com os nomes corretos), você precisará apenas compilar o arquivo itau.java que o copmpilador encontra o arquivo ItauCripto.java (ele busca os pacotes na árvore de pastas e nas bibliotecas que estão no classpath), então teríamos algo como:

javac -cp /usr/share/tomcat7/lib/servlet-api.jar itau.java
M

@Eldius ainda continua com o erro. Tentei de inúmeras formas. Os caminhos dos arquivos são:

servlet-api.jar:
/usr/share/tomcat7/lib/servlet-api.jar

itau.java:
/itau.java

Itaucripto.class:
/Itau/Itaucripto.class

O erro continua o mesmo:

<strong>Itau/itau.java:6: package Itau does not exist</strong>

<strong>import Itau.Itaucripto;</strong>

**           ^**

<strong>Itau/itau.java:68: cannot find symbol</strong>

<strong>symbol  : class Itaucripto</strong>

<strong>location: class ServletCriptoShopline</strong>

<strong>Itaucripto cripto = new Itaucripto();</strong>

<strong>^</strong>

<strong>Itau/itau.java:68: cannot find symbol</strong>

<strong>symbol  : class Itaucripto</strong>

<strong>location: class ServletCriptoShopline</strong>

<strong>Itaucripto cripto = new Itaucripto();</strong>
E

@murillo3 me diz qual o package da classe Itaucripto pra confirmar se está correto.

M

@Eldius me desculpe, mudei tanto os diretórios que me confundi ao passar o caminho. Os corretos são:

servlet-api.jar:
/usr/share/tomcat7/lib/servlet-api.jar

itau.java:
/Itau/itau.java

Itaucripto.class:
/Itau/Itau/Itaucripto.class

Tentei o comando:
javac -cp /usr/share/tomcat7/lib/servlet-api.jar Itau/itau.java

Resposta do erro:

Itau/itau.java:8: class ServletCriptoShopline is public, should be declared in a file named ServletCriptoShopline.java

public class ServletCriptoShopline extends HttpServlet

^

Itau/itau.java:6: package Itau does not exist

import Itau.Itaucripto;

^

Itau/itau.java:68: cannot find symbol

symbol  : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();

^

Itau/itau.java:68: cannot find symbol

symbol  : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();

^

4 errors
E

Como eu havia dito antes, o arquivo tem que ter o mesmo nome da classe, se o arquivo tem a classe ServletCriptoShopline, ele deve se chamar ServletCriptoShopline.java…

Eu achei que você estava trabalhando com um arquivo .java, mas como é um arquivo .class ela entra no parâmetro classpath.

javac -cp /usr/share/tomcat7/lib/servlet-api.jar:/Itau/Itaucripto.class ServletCriptoShopline.java
M

@Eldius Ainda erro =/

javac -cp /usr/share/tomcat7/lib/servlet-api.jar:/Itau/Itaucripto.class ServletCriptoShopline.java

ServletCriptoShopline.java:6: package Itau does not exist

import Itau.Itaucripto;

^

ServletCriptoShopline.java:68: cannot find symbol

symbol  : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();

^

ServletCriptoShopline.java:68: cannot find symbol

symbol  : class Itaucripto

location: class ServletCriptoShopline

Itaucripto cripto = new Itaucripto();

^

3 errors
M

@Eldius, eu ainda não consegui solucionar a sintaxe correta. Você tem mais alguma sugestão? Obrigado!

Criado 3 de janeiro de 2017
Ultima resposta 1 de fev. de 2017
Respostas 13
Participantes 3