# Tomcat Umgebungsvariablen für JSP (CompilerError)



## mike66 (4. Nov 2006)

Hi,

habe Tomact unter WinXP Home installiert... Servlets laufen auch. Kann nur leider
keine JSP abarbeiten lassen da Tomcat offensichtlich nicht den Compiler findet.

HelloWorld2.jsp liegt imVerzeichnis C:\Tomcat\webapps\tele-ak\ 

<html>
  <head>
    <title>Hello World JSP</title>
  </head>
  <body>
    <% for (int i = 1; i <= 5; i++) { %>
	  <span style="font-size: <%=5*i%>pt">Hello World
	  </span>

    <% } %>
  </body>
</html>

Applikationsverzeichnis für Servlets (Servlets laufen auch):
C:\Tomcat\webapps\tele-ak\WEB-INF\classes

Verzeichnisauszug von c:\
20.09.2006  15:12    <DIR>          jdk1.5.0_04
20.09.2006  15:14    <DIR>          jre1.5.0_04
25.10.2006  17:16    <DIR>          Tomcat

Umgebungsvariablenauszug unter XP Home:
CATALINA_HOME=C:\Tomcat
CLASSPATH=C:\Tomcat\common\lib\servlet-api.jar
JAVA_HOME=C:\jdk1.5.0_04
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\ATI Te
chnologies\ATI Control Panel;c:\jdk1.5.0_04\bin

Beim Aufruf über den Browser sollte doch das *.jsp in ein Servlet umgewandelt und eine
*.class erzeugt werden, richtig?

Stattdessen zeigt der Browser beim Aufruf von http://localhost:8080/tele-ak/HelloWorld2.jsp
folgenden Error:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: Unable to compile class for JSP
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:346)
	org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:414)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
	org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:106)
	org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:935)
	org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:764)
	org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28


Also stimmt eine Umgebungsvariable nicht, richtig? Obwohl JAVA_HOME=C:\jdk1.5.0_04 doch eigentlich
(siehe c:\) auf das richtige Verzeichnis zeigt... Hat jemand ne Idee?... vielen Dank.

Mike66


----------



## SlaterB (4. Nov 2006)

ein interessanter Link ganz oben bei google 'Unable to find a javac compiler;'

http://forum.java.sun.com/thread.jspa?threadID=556816&start=0&tstart=0


----------



## mike66 (4. Nov 2006)

Hi,

merci... ich teste das moin mal, d.h. Du siehst implizit keinen Fehler bei den "Fenster"-Umgebungsvariablen
bzw. die sind so schon mal korrekt gesetzt, richtig?

Danke & Grüße

Mike66


----------



## SlaterB (5. Nov 2006)

oje, dazu sage ich besser gar nix, 
das kann man 5x hintereinander installieren und bekommt 6 verschiede Zustände,
verrückt dass das im 21. Jahrhundert immer noch alles so unnatürlich zusammenhängt 
und Fehlermeldungen "Perhaps JAVA_HOME does not point to the JDK" lauten statt
"Perhaps JAVA_HOME does not point to the JDK,
JAVA_HOME = .. 
CLASSPATH = ..

...

...

...

..."

-----------

wenn du auf  der Konsole mit javac kompilieren kannst, 
dann ist das schonmal nicht schlecht

beim Classpath übrigens nie den Punkt vergessen, ganz wichtig
CLASSPATH=.;C:\Tomcat\common\lib\servlet-api.jar


----------



## mike66 (5. Nov 2006)

....
ein interessanter Link ganz oben bei google 'Unable to find a javac compiler;' 

http://forum.java.sun.com/thread.jspa?threadID=556816&start=0&tstart=0
....

Hi,

der obige Link von SlaterB brachte die Lösung:

_Correction - adding the tools.jar to the $Tomcat_Home/common/lib solved the problem.
Thanks for all._
Keine Ahnung warum…? aber das ist die Lösung!!!
Kopiere C:\jdk1.5.0_04\lib\tools.jar nach C:\Tomcat\common\lib\ löst das Problem...
und Tomcat findet den Compiler für "JSPs"   

Danke und Grüße

P.S. Muss ich den Thread jetzt irgendwie als gelöst "schliessen"... ?


----------



## Gast (9. Feb 2007)

Das war's auch bei mir.
Und ganz komisch: es funktionierte auch noch, als ich die Datei tools.jar probehalber mal wieder gelöscht habe ...


----------

