Eu quero desenvolver com Servlets no Eclipse, mas ele diz que o pacote javax.servlet
não pode ser resolvido. Como posso adicionar um javax.servlet
pacote ao meu projeto Eclipse?
Eu quero desenvolver com Servlets no Eclipse, mas ele diz que o pacote javax.servlet
não pode ser resolvido. Como posso adicionar um javax.servlet
pacote ao meu projeto Eclipse?
Respostas:
Verifique se você está usando pelo menos os desenvolvedores Eclipse IDE para Enterprise Java (com a Enterprise ). Ele contém ferramentas de desenvolvimento para criar projetos dinâmicos da web e integrar facilmente contêineres de servlet (essas ferramentas fazem parte da Web Tools Platform, WTP). Caso você já tenha o Eclipse IDE para Java (sem Enterprise) e tenha instalado manualmente alguns plugins relacionados, é provável que isso não tenha sido feito corretamente. É melhor jogar no lixo e pegar o verdadeiro Eclipse IDE for Enterprise Java one.
Você também precisa garantir que você já tenha um servletcontainer instalado em sua máquina que implemente pelo menos a mesma versão da API do Servlet que o servletcontainer no ambiente de produção, por exemplo, Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , etc. Geralmente, apenas baixar o arquivo ZIP e extraí-lo é suficiente. No caso do Tomcat, não faça o download do formato EXE, apenas para ambientes de produção baseados no Windows. Consulte também ao Várias portas (8005, 8080, 8009) exigidas pelo Tomcat Server no localhost já estão em uso .
Um servletcontainer é uma implementação concreta da API do Servlet. Observe que o download do Java EE SDK no Oracle.com basicamente contém o GlassFish. Portanto, se você já baixou o Java EE SDK, basicamente já possui o GlassFish. Observe também que, por exemplo, o GlassFish e o JBoss AS / WildFly são mais do que apenas um servletcontainer, eles também suportam JSF, EJB, JPA e todas as outras fantasias do Java EE. Consulte também ao O que exatamente é o Java EE?
Depois de instalar o Eclipse para Enterprise Java e um servletcontainer em sua máquina, execute as seguintes etapas no Eclipse:
Integrar servletcontainer no Eclipse
uma. Via visualização Servidores
Abra a visualização Servidores na caixa inferior.
Clique com o botão direito do mouse e escolha Novo> Servidor .
Escolha a marca e a versão do servletcontainer apropriadas e passe pelo assistente.
b. Ou, através das preferências do Eclipse
Associar servidor ao projeto
uma. Em novo projeto
Abra o Project Navigator / Explorer no lado esquerdo.
Clique com o botão direito do mouse e escolha Novo> Projeto e, em seguida, no menu Web> Projeto Dinâmico da Web .
No assistente, defina o Target Runtime para o servidor integrado.
b. Ou, no projeto existente
Clique com o botão direito do mouse no projeto e escolha Propriedades .
Na seção Tempo de execução alvejado , selecione o servidor integrado.
De qualquer forma, o Eclipse automaticamente pegará as bibliotecas do contêiner de servlet no caminho de construção. Dessa forma, você poderá importar e usar a API do Servlet.
Em qualquer caso, você não precisa mexer na propriedade Build Path do projeto. Você deve, acima de tudo Nunca manualmente cópia / download / mover / incluem o específico servletcontainer-individual bibliotecas como servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
, javaee.jar
, etc. Isso só levaria a portabilidade futuro, compatibilidade, classpath e facilidade de manutenção problemas, porque o seu webapp não iria funcionar quando é implementado em um servletcontainer de uma marca / versão diferente daquela de onde essas bibliotecas são originalmente obtidas.
Caso esteja usando o Maven, você precisa ter certeza absoluta de que as bibliotecas específicas do servidor de servlet que já são fornecidas pelo tempo de execução de destino estão marcadas como <scope>provided</scope>
.
Aqui estão algumas exceções típicos que você pode obter quando você maca /WEB-INF/lib
ou mesmo /JRE/lib
, /JRE/lib/ext
, etc com bibliotecas específicas-servletcontainer em uma tentativa de descuidado para corrigir os erros de compilação:
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
etc
maven-archetype-webapp
não incluem o JAR servlet-api como uma dependência? O projeto possui um index.jsp com erro de compilação. (Eclipse Luna id Constituição: 20140612-0600, JDK 8, m2eclipse)
servlet-api
dependências do @arun são fornecidas pelos ambientes de tempo de execução do Servlet, como Tomcat, Wildfly, Glassfish, etc. Nunca inclua-o como parte do seu aplicativo, pois há uma boa possibilidade de ele colidir com o ambiente.
Vá para as propriedades do seu projeto (com Alt+ Enterou clique com o botão direito do mouse)
verifique no Apache Tomcat v7.0 em Targeted Runtime e ele funciona.
The import javax.servlet cannot be resolved
.
Pouca diferença em relação a Hari:
Clique com o botão direito do mouse em projeto ---> Propriedades ---> Caminho de Construção Java ---> Adicionar Biblioteca ... ---> Server Runtime ---> Apache Tomcat ----> Concluir.
Inclua servlet-api.jar da pasta lib do servidor.
Faça este passo
Adicione a dependência do javax.servlet no pom.xml. Seu problema será resolvido.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Correção Rápida - Funcionou no Eclipse - Clique com o botão direito do mouse em projeto -> Propriedades -> Caminho de Construção Java (Guia) -> Adicionar JARs Externos -> localize a implementação do servlet api jar (se Tomcat - nomeado servlet-api.jar) -> Clique OK. É isso aí !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
r, j2ee.jar
, javaee.jar
, etc. Seria só levar a portabilidade futuro, compatibilidade, classpath e problemas de manutenção.
você pode simplesmente copiar servlet-api.jar
e copiar os arquivos jar na pasta lib, que está no WEB-INF. depois limpe e construa seu projeto, seus erros serão resolvidos.
**OR**
você pode adicionar diretamente arquivos jar à biblioteca usando as etapas a seguir.
servlet-api.jar
arquivo.servlet-api.jar
, jsp-api.jar
, javaee.jar
, etc. Isso só levaria a portabilidade futuro, compatibilidade, classpath e facilidade de manutenção problemas.
Eu sei que este é um post antigo. No entanto, observei outra instância em que no projeto o Tomcat já foi adicionado, mas ainda recebemos esse erro. Isso foi resolvido para:
Alt + Enter
Facets do projeto
À direita, ao lado dos detalhes, há outra guia "Runtimes". O servidor tomcat instalado será listado lá. Selecione.
Salve a configuração e CONCLUÍDO!
Espero que isso ajude alguém.
Da wikipedia .
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<html>\n" +
"<head><title>Hello WWW</title></head>\n" +
"<body>\n" +
"<h1>Hello WWW</h1>\n" +
"</body></html>");
}
}
Obviamente, isso funcionará apenas se você tiver adicionado o servlet-api.jar
caminho de construção ao Eclipse. Normalmente, seu servidor de aplicativos (por exemplo, Tomcat ) terá o arquivo jar correto.
Para projetos maven, adicione a seguinte dependência:
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Para projetos gradle:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
ou faça o download javax.servlet.jar
e adicione ao seu projeto.
Eu estava recebendo uma exceção de ponteiro nulo durante a criação do projeto, relacionada ao "Dynamic Web Module".
Para que o projeto seja compilado (ou seja, para javax.servlet
importar com sucesso), tive que ir às Propriedades do projeto , escolher Facetas do Projeto na barra lateral, marque o Dynamic Web Module e clique em Aplicar .
Surpreendentemente, desta vez, a faceta "Dynamic Web Module" foi instalada corretamente e a importação começou a funcionar.
No meu caso, quando eu fui aos tempos de execução segmentados , o Tomcat 7 não estava listado (desativado) apesar de estar instalado.
Para corrigir, tive que ir para Preferências-> Servidor-> Ambientes de Tempo de Execução , desinstalar e reinstalar o Tomcat 7.
Muitos de nós desenvolvemos no Eclipse através de um projeto Maven. Nesse caso, você pode incluir dependências do Tomcat no Maven através dos jars tomcat-servlet-api
e tomcat-jsp-api
. Existe um para cada versão do Tomcat. Geralmente, adicioná-los com escopo provided
ao seu POM é suficiente. Isso manterá sua compilação mais portátil.
Se você atualizar o Tomcat no futuro, simplesmente atualize a versão desses jars.
Acima de tudo, você nunca deve copiar / baixar / mover / incluir manualmente as bibliotecas individuais específicas do servletcontainer, como servlet-api.jar
@BalusC,
Eu preferiria usar as classes exatas que meu aplicativo usará, em vez de uma fornecida pelo Eclipse (quando estou me sentindo um desenvolvedor paranóico).
Outra solução seria usar o Eclipse "Configurar Caminho de Construção"> Bibliotecas> Adicionar Jars Externos e adicionar a API do servlet de qualquer Container que escolher usar.
E siga a solução do @kaustav datta ao usar o ant para construir - tenha uma propriedade como tomcat.home ou weblogic.home. No entanto, introduz outra restrição de que o desenvolvedor deve instalar o Weblogic em sua máquina local se o weblogic estiver sendo usado! Alguma outra solução mais limpa?
Este também pode ser o motivo. Eu vim com o seguinte pom.xml
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
O problema não resolvido ocorreu devido à exclusão de spring-boot-starter-tomcat
. Basta remover a <exclusions>...</exclusions>
dependência, isso resolverá o problema, mas verifique se que isso também exclua o servidor tomcat incorporado.
Se você também precisar do servidor tomcat incorporado, poderá adicionar a mesma dependência compile scope
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>