Apologies, I've put a lot in this email so that hopefully my rescuer won't have to in theirs...
This is probably such a dumb problem I deserve to be shot, but I'm stuck and I have no support and I'm desperately trying to migrate one machine in this office so that we don't have to shell out for more expensive proprietary lock-in rubbish (here a CRM). Machine i686, OS RedHat 9... I'm trying to get Hipergate up and running, for which I need Java (RE and DK) and Tomcat. I've never set up a web server before and always had a nightmare with Java - which I like in theory, but find infuriatingly bloated. Well, I've got J2EE in it's default place /opt/ and Tomcat 5.0.30 in /opt too and everything is now working fine. The Tomcat admin pages come up okay, I can log in and I can 'run' the example JSP pages. I've even got Hipergate deployed on Tomcat and can see it's login page. But that's as far as I go... As soon as I hit login I get error(s) of the form: 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(DefaultErrorHandle r.java:97) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:3 46) org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:497) org.apache.jasper.compiler.Compiler.compile(Compiler.java:476) org.apache.jasper.compiler.Compiler.compile(Compiler.java:464) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5 11) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2 95) 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(C ompilerAdapterFactory.java:105) org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:929) org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:758) org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:407) org.apache.jasper.compiler.Compiler.compile(Compiler.java:497) org.apache.jasper.compiler.Compiler.compile(Compiler.java:476) org.apache.jasper.compiler.Compiler.compile(Compiler.java:464) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5 11) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2 95) 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.30 logs. FYI the said stack trace looks like this: [EMAIL PROTECTED] opt]# tail -50 jakarta-tomcat-5/jakarta-tomcat-5.0.30/logs/localhost_log.2005-03-17.txt 2005-03-17 14:38:50 StandardContext[/jsp-examples]SessionListener: attributeAdded('AA89D380700D2E70151385DD9E96D9EE', 'theTruth', 'true') 2005-03-17 14:39:13 StandardContext[/jsp-examples]SessionListener: attributeAdded('AA89D380700D2E70151385DD9E96D9EE', 'javax.servlet.jsp.jstl.fmt.request.charset', 'UTF-8') 2005-03-17 14:40:10 StandardContext[/servlets-examples]InvokerFilter(ApplicationFilterConfig[nam e=Path Mapped Filter, filterClass=filters.ExampleFilter]): 5 milliseconds 2005-03-17 14:40:14 StandardContext[/servlets-examples]InvokerFilter(ApplicationFilterConfig[nam e=Path Mapped Filter, filterClass=filters.ExampleFilter]): 7 milliseconds 2005-03-17 14:44:48 StandardContext[/manager]HTMLManager: list: Listing contexts for virtual host 'localhost' 2005-03-17 14:45:03 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception 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 at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(C ompilerAdapterFactory.java:105) at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:929) at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:758) at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:407) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:497) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:476) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:464) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5 11) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2 95) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application FilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja va:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex t.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext Valve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja va:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex t.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137 ) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex t.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118 ) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex t.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java :109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex t.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne ction(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav a:684) at java.lang.Thread.run(Thread.java:534) 2005-03-17 15:10:08 StandardContext[/jsp-examples]SessionListener: sessionDestroyed('AA89D380700D2E70151385DD9E96D9EE') 2005-03-17 15:10:08 StandardContext[/jsp-examples]SessionListener: attributeRemoved('AA89D380700D2E70151385DD9E96D9EE', 'table', '[EMAIL PROTECTED]') 2005-03-17 15:10:08 StandardContext[/jsp-examples]SessionListener: attributeRemoved('AA89D380700D2E70151385DD9E96D9EE', 'javax.servlet.jsp.jstl.fmt.request.charset', 'UTF-8') 2005-03-17 15:10:08 StandardContext[/jsp-examples]SessionListener: attributeRemoved('AA89D380700D2E70151385DD9E96D9EE', 'theTruth', 'true') It seems to be a system classLoader problem, which (according to: http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html "System - This class loader is normally initialized from the contents of the CLASSPATH environment variable. All such classes are visible to both Tomcat internal classes, and to web applications." where: "However, the standard Tomcat 4 startup scripts ($CATALINA_HOME/bin/catalina.sh or %CATALINA_HOME%\bin\catalina.bat) totally ignore the contents of the CLASSPATH environment variable itself" (bizarre?!). Is Tomcat 5 the same? Besides I'm running from the command: [EMAIL PROTECTED] (in tomcat root)]# ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -Dfile.encoding=UTF-8 -cp ./bin/bootstrap.jar -outfile ./logs/catalina.out -errfile ./logs/catalina.err org.apache.catalina.startup.Bootstrap Running bin/startup.sh crashes my shell (for the same reason as this issue I think). I've tried numerous combinations of CLASSPATH(S), PATH(S) and JAVA_HOME variables in different orders to no avail. I've also updated /etc/profile so that these are global and persistent. The variables are currently set at: PATH=$PATH:/opt/SUNWappserver/bin JAVA_HOME=/opt/SUNWappserver/jdk CLASSPATH=/opt/SUNWappserver/jdk (tried lots of others simulataneously) LD_ASSUME_KERNEL="2.2.5" The contents of which are: [EMAIL PROTECTED] opt]# ls -l /opt/SUNWappserver/jdk/ total 88 drwxr-xr-x bin -rw-r--r-- COPYRIGHT drwxr-xr-x demo drwxr-xr-x include drwxr-xr-x jre drwxr-xr-x lib -rw-r--r-- LICENSE drwxr-xr-x man -rw-r--r-- README -rw-r--r-- README.html -rw-r--r-- THIRDPARTYLICENSEREADME.txt [EMAIL PROTECTED] opt]# ls -l /opt/SUNWappserver/jdk/bin total 1732 -r-xr-xr-x 66420 appletviewer -r-xr-xr-x 66156 extcheck -r-xr-xr-x 1080 HtmlConverter -r-xr-xr-x 66188 idlj -r-xr-xr-x 66156 jar -r-xr-xr-x 66156 jarsigner -r-xr-xr-x 64940 java -r-xr-xr-x 66156 javac -r-xr-xr-x 66156 javadoc -r-xr-xr-x 66156 javah -r-xr-xr-x 66156 javap -r-xr-xr-x 1789 java-rmi.cgi -r-xr-xr-x 66156 jdb -r-xr-xr-x 66156 keytool -r-xr-xr-x 66188 kinit -r-xr-xr-x 66188 klist -r-xr-xr-x 66188 ktab -r-xr-xr-x 66156 native2ascii -r-xr-xr-x 66380 orbd -r-xr-xr-x 66420 policytool -r-xr-xr-x 66156 rmic -r-xr-xr-x 66156 rmid -r-xr-xr-x 66156 rmiregistry -r-xr-xr-x 66156 serialver -r-xr-xr-x 66188 servertool -r-xr-xr-x 66188 tnameserv (how are these all similar sizes?) [EMAIL PROTECTED] opt]# ls -l /opt/SUNWappserver/jdk/lib total 6324 -rw-r--r-- dt.jar -rw-r--r-- htmlconverter.jar -rw-r--r-- ir.idl -rw-r--r-- orb.idl -rw-r--r-- tools.jar Realising that Java isn't JavaScript I've pointed CLASSPATH to $CATALINA_HOME/common/lib and the like - all that kind of thing. The contents of two important ones are like: [EMAIL PROTECTED] jakarta-tomcat-5.0.30]# ls -l common/lib total 2532 -rw-r--r-- ant.jar -rw-r--r-- ant-launcher.jar -rw-r--r-- commons-collections-3.1.jar -rw-r--r-- commons-dbcp-1.2.1.jar -rw-r--r-- commons-el.jar -rw-r--r-- commons-pool-1.2.jar -rw-r--r-- jasper-compiler.jar -rw-r--r-- jasper-runtime.jar -rw-r--r-- jsp-api.jar -rw-r--r-- naming-common.jar -rw-r--r-- naming-factory.jar -rw-r--r-- naming-java.jar -rw-r--r-- naming-resources.jar -rw-r--r-- servlet-api.jar [EMAIL PROTECTED] ((tomcat)/webapps/)hipergate]# ls -l WEB-INF/lib/ total 15560 -rw-rw-rw- beanshell.bsh-2.0b1.jar -rw-rw-rw- hipergate-2.1.16.jar -rw-rw-rw- ibm.bsf-2.2.jar -rw-rw-rw- j2ee.jar -rw-rw-rw- jaf-1.0.2.jar -rw-rw-rw- jakarta-oro-2.0.8.jar -rw-rw-rw- javamail-1.3.2.jar -rw-rw-rw- jcp.portlet-1.0.jar -rw-rw-rw- jdbc2_0-stdext.jar -rw-rw-rw- lucene-1.4-final.jar -rw-rw-rw- msbase.jar -rw-rw-rw- mssqlserver.jar -rw-rw-rw- msutil.jar -rw-rw-rw- novell.ldap.jar -rw-rw-rw- oracle10g.jdbc3.jar -rw-rw-rw- pg74.215.jdbc3.jar -rw-rw-rw- poi-2.5-final-20040302.jar -rw-rw-rw- poi-contrib-2.5-final-20040302.jar -rw-rw-rw- poi-scratchpad-2.5-final-20040302.jar -rw-rw-rw- sun.jai-1.1.2-clibwrapper_jiio.jar -rw-rw-rw- sun.jai-1.1.2-jai_codec.jar -rw-rw-rw- sun.jai-1.1.2-jai_core.jar -rw-rw-rw- sun.jai-1.1.2-jai_imageio.jar drwxrwxrwx sun.jai-1.1.2-linux-i386 -rw-rw-rw- sun.jai-1.1.2-mlibwrapper_jai.jar drwxrwxrwx sun.jai-1.1.2-windows-i386 -rw-rw-rw- xalan.jar -rw-rw-rw- xercesImpl-2.6-2.jar -rw-rw-rw- xmlParserAPIs-2.6-2.jar So I feel I've got javac and jasper covered one way or another. What's happening!? Is it not the case that all this type of configuration problem (for which I've seen a lot of material on the web) are just file location management issues? Surely this is the sort of problem a 'minor' configuration script can help everybody with? I'd write it myself if I had the insider knowledge. Now I've tried explicitly putting every *.jar file in the whole /opt tree onto CLASSPATH! Now I know I'm missing 'something crucial'. One last thing... what is it? Tomcat or Catalina? They're both great names, but in combination it just says: c o n f u s i n g t o u s e r s. OK, maybe it's just me. I love all Apache / open source efforts, so please don't see this as a complaint; it's great work. Regards, Lee (I'll migrate some of this office to open source even if it kills me.)