# Tomcat -- JSP: komisches Problem



## adouzi (5. Mai 2008)

Hallo Zusammen,

ich habe ein Problem mit Tomcat und ich versuche es seit langer Zeit zu lösen, bis jetzt ohne Erfolg.
Ich habe Tomcat so konfiguriert, dass ein VHost existiert. Das Material ist z.B. in einem Order *verzeichnis*.

Wenn ich zum Testen darauf mit *localhost:8080/verzeichnis* zugreife, dann habe ich gar keine Probleme und von Tomcat keine Fehlermeldungen bekommen.

Wenn ich darauf mit meinem DomainNamen (www.domain.com) zugreife, bekomme ich auch keine Probleme. Da sieht meine index.jsp so aus

```
<%@ page pageEncoding="UTF-8" %>
<%@ include file='./include/header.jsp' %>

<% /* Inhalt */ %>
<div id='inhalt'>
...
```

wenn ich drauf mit *www.domain.com/irgendein_unterverzeichnis*, dann bekomme ich die Schwierigkeiten, auch wenn meine index.jsp in diesem *irgendein_unterverzeichnis*, fast genauso wie oben aussieht, mit einem Unterschied und zwar die Stelle der inludeden Datei. Also so:

```
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ include file='./../include/header.jsp' %>

<%

<% /* Inhalt */ %>
<div id='inhalt'>
...
```

Danach spuckt tomcat so eine Fehlermeldung

```
org.apache.jasper.JasperException: /index.jsp(4,0) File "/./../include/header.jsp" not found
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
	org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:334)
	org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:367)
	org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1433)
	org.apache.jasper.compiler.Parser.parse(Parser.java:133)
	org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
	org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:153)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:294)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:281)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
```

Wie gesagt, wenn ich *localhost:8080/verzeichnis/irgendein_unterverzeichnis* verwende, habe ich keine Probleme.

Tomcat: version 6
BS: Linux Suse 9.2

Hat jemand von euch irgendeine Lösung oder einen Hinweis, woran das liegen könnte.
Danke im Voraus!


----------



## Gast (6. Mai 2008)

Lass dir doch mal den kompletten Pfad ausgeben. Vielleicht geht er ja vom falschen Verzeichnis aus.


----------



## adouzi (7. Mai 2008)

Danke für den Gedanken.
Es hat leider nicht geholfen.
Habt ihr noch Vermutungen!!!!?


----------



## adouzi (8. Mai 2008)

Hat keiner einen Vorschlag!!!?


----------



## HLX (9. Mai 2008)

Der in der Exception angegebene Pfad ist absolut zum Kontext deiner Anwendung, da er mit einem "/" beginnt. Im Code ist dies nicht der Fall.

Versuche doch mal im Code auch kontextabsolute Pfade zu verwenden. Der Pfad wird hierbei nach dem führenden Slash ab dem Wurzelverzeichnis deines Webinhalts gebildet:

Bsp Struktur:

```
MyApplication (Root)
+ css
+ content
++ content.jsp
+ include
++ header.jsp
+ WEB-INF
++ web.xml
```

Bsp Include:

```
<%@ include file='/include/header.jsp' %>
```


----------



## adouzi (9. Mai 2008)

Danke HLX für die Antwort,
ich habe es versucht, leider ohne Erfolg. Du hast Recht, es liegt bestimmt an der Sache mit dem absoluten Pfad, aber ich kriege es leider nicht hin. Ich alles mögliche ohne positives Ergebnis versucht.

mein Webapplikation ist unter diesem Pfad zu erreichen:

```
file:/srv/www/htdocs/meineApplikation
```

Intern sieht sie so aus


```
meineApplikation
+ css
+ content
      ++ index.jsp
+ include
       ++ header.jsp
+ WEB-INF
       ++ web.xml
+index.jsp
```

Ich habe folgendes probiert (das in der Datei meineApplikation/content/index.jsp):


```
<%@ include file='file:/srv/www/htdocs/meineApplikation/include/header.jsp' %> 
<%@ include file='/srv/www/htdocs/meineApplikation/include/header.jsp' %> 
<%@ include file='/include/header.jsp' %> 
<%@ include file='/../include/header.jsp' %>
```

in der Datei meineApplikation/index.jsp includiere ich auch die header.jsp und hier klappt es ohne probleme und zwar so

```
<%@ include file='./include/header.jsp' %>
```

Wer hat noch Vorschläge!!?


----------



## maki (9. Mai 2008)

Wie wäre es mit:


```
<%@ include file='/include/header.jsp' %>
```


----------



## adouzi (9. Mai 2008)

ich habe es schon verwendet, leider ohne Erfolg


----------



## maki (9. Mai 2008)

hmmm, geht denn

<%@ include file='../include/header.jsp' %>


----------



## adouzi (9. Mai 2008)

leider auch nicht. Ich weiß nicht woran das liegen kann. 
Noch eine Information, die vielleicht helfen kann. Ich habe das Problem nur wenn ich darauf durch www.meineDomain.com zugreife. Wenn ich localhost:8080/meineApplikation verwende, habe ich keine Probleme


----------



## maki (9. Mai 2008)

Wie ist es, wenn du statt der include direktive ein jsp:include verwendest?


----------



## adouzi (9. Mai 2008)

leider auch nicht.
Aber wenn ich das verwenden 

```
<jsp:include page='./../include/header.jsp' />
```

bekomme ich 

```
org.apache.jasper.JasperException: javax.servlet.ServletException: File "/include/header.jsp" not found
```

wenn ich das verwende 

```
<jsp:include page='../include/header.jsp' />
```
oder 

```
<jsp:include page='/../include/header.jsp' />
```

bekomme ich 

```
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 8

7: 
8: <jsp:include page='../include/header.jsp' /> bzw. 8: <jsp:include page='/../include/header.jsp' />
```


----------

