# Servlet "package does not exist"



## jarell (4. Sep 2011)

Hi,

ich hatte neulich ein merkwürdiges Problem als ich ein relativ simples Servlet kompilieren wollte.

Beschriebung des Problems:

POJO-Klasse BeerExpert
befindet sich in dem package: com.example.model

Servlet BeerSelect
befindet sich in dem package: com.example.web

BeerExpert wird nun folgendermaßen in dem Servlet verwendet:


```
package com.example.web;

import com.example.model.BeerExpert;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Jarell
 * Date: 02.09.11
 * Time: 10:17
 * To change this template use File | Settings | File Templates.
 */
public class BeerSelect extends HttpServlet{

    public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException{
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String color = request.getParameter("color");
        BeerExpert expert = new BeerExpert();
        List result = expert.getBrands(color);

        request.setAttribute("styles", result);
        RequestDispatcher view = request.getRequestDispatcher("result.jsp");
        view.forward(request, response);
    }
}
```

(das Beispiel stammt übrigens aus dem Buch HeadFirst – Servlets & JSP)

Beim Kompilieren des Servlets kam es nun *teilweise* zu der Fehlermeldung : *package com.example.model does not exist. *

Nach dem Überprüfen (nichts verändert!) des Codes versuchte ich das Kompilieren erneut und siehe da,… es funktioniert… 

Nach ein paar Änderungen an dem Servlet wollte ich es erneut Kompilieren und die (mir unerklärliche) Fehlermeldung kam erneut… 

Wieder stocherte ich im Code herum und suchte nach einer Erklährung,… konnte aber nichts finden. Ich versuchte das Kompilieren des Servlets erneut und bums… es funktioniert.... :autsch:

Was kann dieses Verhalten erklären? Hat jemand schon mal ähnliche Erfahrungen gemacht?

Ps. Kompiliert habe ich jeweils in der IDE IntelliJ IDEA. Wegen des Komischen Fehlers habe ich aber auch manuell via javac in der Kommandozeile versucht zu Kompilieren… wollte ein Problem mit der IDE ausschließen…


----------



## bERt0r (4. Sep 2011)

Hab keine Erfahrungen mit IntelliJ IDEA, habe aber ähnliches schon in Eclipse erlebt. Der Grund war, dass ich nicht alle Dateien gespeichert habe vor dem Kompilieren und eine IDE interne Fehlerüberprüfung den Fehler warf, bevor der Java-Compiler überhaupt gestartet wurde. Nach dem (nicht erfolgreichen) Kompilierversuch wurden alle Dateien neu gespeichert und es lief.
Speziell wenn man in mehreren Packages arbeitet und Änderungen durchführt passiert das.


----------



## jarell (4. Sep 2011)

Hmm ja, das könnte in der Tat eine Erklärung sein. Am Code habe ich bei der Fehlersuche definitiv nichts geändert,... aber schon möglich, dass ich die Dateien noch einmal gespeichert habe. 

Danke für den Hinweis!

Werde der Sache noch einmal nachgehen.


----------



## jarell (6. Sep 2011)

Habe das jetzt noch mal gestetst, und es liegt leider nicht an dem Speichern der beteiligten Klassen... 

bin echt ratlos,... :autsch:


----------



## Asgar13 (6. Sep 2011)

Kann es sein, das zuerst das Packet nicht gefunden wird, weil er es danach erst kompiliert?


----------



## waldek87 (6. Sep 2011)

Ein kleiner Hinweis zu IntelliJ: die IDE speichert automatisch jede Art von Änderung an Dateien (gilt übrigens auch für die anderen IDEs von Jetbrains)


----------

