не может разрешить символ 'сервлет' - PullRequest
8 голосов
/ 28 февраля 2012

У меня большой вопрос для новичка.Когда я попробую следующее;«сервлет» становится красным и указывает «Не удается разрешить символ« сервлет ».

import javax.servlet.http.*;
import javax.servlet.ServletException;

Я запустил Apache Tomcat.Я очень большой новичок Java.Может кто-нибудь помочь мне, где найти библиотеку сервлетов или что-то?Я гуглил, но не получил четкого объяснения, как заставить это работать.

Это содержимое моего файла web.xml;

<?xml version="1.0" encoding="ISO-8859-1"?>
<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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <display-name>
        HelloWorld
    </display-name>
    <description>
        This is my first webapp
    </description>

    <servlet>
        <servlet-name>Hello world!</servlet-name>
        <description>This is a hello world servlet</description>
        <servlet-class>servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>HelloWorldServlet</url-pattern>
    </servlet-mapping>

</web-app>

РЕДАКТИРОВАТЬ: Я используюIntelliJ IDEA IDE.И я использую Maven.

Ответы [ 5 ]

12 голосов
/ 28 февраля 2012

Кувшин сервлета должен находиться на вашем пути сборки.

Если вы используете maven, вы можете сделать это:

<dependency>
 <groupId>org.apache.tomcat</groupId>
 <artifactId>tomcat-servlet-api</artifactId>
 <version>7.0.21</version>
 <scope>provided</scope>
</dependency>

Или использовать одного из перечисленных поставщиков здесь , например, ниже, который не зависит отспециальный контейнер:

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.0.1</version>
   <scope>provided</scope>
</dependency>
3 голосов
/ 28 февраля 2012

Похоже, вам не хватает записи пути к классу для servlet.jar. Вы не сказали нам, как вы строите это, но в основном вам нужно скомпилировать против servlet.jar. Вам не нужно явно указывать это где-либо на время выполнения , так как Tomcat должен позаботиться об этом.

2 голосов
/ 28 февраля 2012

Вам не хватает Банки сервлетов в вашем classpath.add и той же банке в вашем пути к классам.

Если вы используете Eclipse, щелкните проект правой кнопкой мыши.

-->Properties --->Java build path --->select Libraries

добавьте туда банку.

1 голос
/ 22 августа 2016

При первом использовании IntelliJ IDEA у меня возникла та же проблема, но я думаю, что принцип должен быть таким же, как в Eclipse, просто настройте наш необходимый файл jar для внешней библиотеки.

Перейдите в «Файл» --> "структура проекта" ----> "Библиотека", затем нажмите кнопку и добавьте необходимую банку.

Не удается найти сервлет, кажется, вы потеряли server-api.jarфайл, просто поместите его в свою библиотеку.И если вы хотите создать проект j2ee, просто этот файл не имеет смысла.

Так что просто поместите весь локальный файл jar tomcat / lib в ваш проект, и функция будет такой же, как eclipse (настройте путь сборки-> сервер времени выполнения ...).

0 голосов
/ 28 февраля 2012
<servlet>
    <servlet-name>Hello world!</servlet-name>
    <description>This is a hello world servlet</description>
    <servlet-class>servlet</servlet-class> <--here is full name of your servlet class.
</servlet>

<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name><--here must be match <servlet-name>
    <url-pattern>HelloWorldServlet</url-pattern>
</servlet-mapping>
...