Guacamole requires Tomcat 9.

There is an ongoing Issue to update it to run on later versions but at this 
time it is not possible.


________________________________
From: russell <[email protected]>
Sent: Wednesday 1 October 2025 12:39
To: [email protected] <[email protected]>
Subject: Severe error when Tomcat11 webapps guacamole-1.6.0.war

You don't often get email from [email protected]. Learn why this is 
important<https://aka.ms/LearnAboutSenderIdentification>

Hi

I have deployed Tomcat 11, OpenJDK 25 (tried OpenJDK 21) with Guacamole 
1.6.0.war on Debian.
Looking at Catalina.log, the Guacamole WAR is correctly deployed into 
/var/lib/tomcat11/webapps/quacamole.
01-Oct-2025 12:06:27.690 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Server version name:   
Apache Tomcat/11.0.6 (Debian)
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Server built:          
Apr 3 2025 20:30:12 UTC
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Server version number: 
11.0.6.0
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log OS Name:               
Linux
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log OS Version:            
6.12.48+deb13-amd64
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Architecture:          
amd64
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Java Home:             
/usr/lib/jvm/java-25-openjdk-amd64
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           
25-ea+32-Debian-1
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            
Debian
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         
/var/lib/tomcat11
01-Oct-2025 12:06:27.691 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         
/usr/share/tomcat11
01-Oct-2025 12:06:27.699 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Djava.util.logging.config.file=/var/lib/tomcat11/conf/logging.properties
01-Oct-2025 12:06:27.699 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Djava.awt.headless=true
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Djdk.tls.ephemeralDHKeySize=2048
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.base/java.lang=ALL-UNNAMED
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.base/java.io=ALL-UNNAMED
01-Oct-2025 12:06:27.700 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.base/java.util=ALL-UNNAMED
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
--enable-native-access=ALL-UNNAMED
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Dcatalina.base=/var/lib/tomcat11
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Dcatalina.home=/usr/share/tomcat11
01-Oct-2025 12:06:27.701 INFO [main] 
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: 
-Djava.io.tmpdir=/tmp
01-Oct-2025 12:06:27.705 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent An older version 
[1.3.1] of the Apache Tomcat Native library is installed, while Tomcat 
recommends a minimum version of [2.0.5]
01-Oct-2025 12:06:27.705 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache 
Tomcat Native library [1.3.1] using APR version [1.7.5].
01-Oct-2025 12:06:27.710 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL 
successfully initialized [OpenSSL 3.5.1 1 Jul 2025]
01-Oct-2025 12:06:27.925 INFO [main] org.apache.coyote.AbstractProtocol.init 
Initializing ProtocolHandler ["http-nio-8080"]
01-Oct-2025 12:06:27.939 INFO [main] org.apache.catalina.startup.Catalina.load 
Server initialization in [370] milliseconds
01-Oct-2025 12:06:27.971 INFO [main] 
org.apache.catalina.core.StandardService.startInternal Starting service 
[Catalina]
01-Oct-2025 12:06:27.971 INFO [main] 
org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: 
[Apache Tomcat/11.0.6 (Debian)]
01-Oct-2025 12:06:27.976 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment 
descriptor [/etc/tomcat11/Catalina/localhost/host-manager.xml]
01-Oct-2025 12:06:27.985 WARNING [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor The path attribute with 
value [/host-manager] in deployment descriptor 
[/etc/tomcat11/Catalina/localhost/host-manager.xml] has been ignored
01-Oct-2025 12:06:28.601 INFO [main] 
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for 
TLDs yet contained no TLDs. Enable debug logging for this logger for a complete 
list of JARs that were scanned but no TLDs were found in them. Skipping 
unneeded JARs during scanning can improve startup time and JSP compilation time.
01-Oct-2025 12:06:28.624 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of 
deployment descriptor [/etc/tomcat11/Catalina/localhost/host-manager.xml] has 
finished in [646] ms
01-Oct-2025 12:06:28.624 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment 
descriptor [/etc/tomcat11/Catalina/localhost/manager.xml]
01-Oct-2025 12:06:28.625 WARNING [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor The path attribute with 
value [/manager] in deployment descriptor 
[/etc/tomcat11/Catalina/localhost/manager.xml] has been ignored
01-Oct-2025 12:06:29.000 INFO [main] 
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for 
TLDs yet contained no TLDs. Enable debug logging for this logger for a complete 
list of JARs that were scanned but no TLDs were found in them. Skipping 
unneeded JARs during scanning can improve startup time and JSP compilation time.
01-Oct-2025 12:06:29.002 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of 
deployment descriptor [/etc/tomcat11/Catalina/localhost/manager.xml] has 
finished in [378] ms
01-Oct-2025 12:06:29.003 INFO [main] 
org.apache.catalina.startup.HostConfig.deployWAR Deploying web application 
archive [/var/lib/tomcat11/webapps/guacamole.war]
01-Oct-2025 12:06:29.939 INFO [main] 
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for 
TLDs yet contained no TLDs. Enable debug logging for this logger for a complete 
list of JARs that were scanned but no TLDs were found in them. Skipping 
unneeded JARs during scanning can improve startup time and JSP compilation time.
01-Oct-2025 12:06:29.940 SEVERE [main] 
org.apache.catalina.core.StandardContext.startInternal One or more listeners 
failed to start. Full details will be found in the appropriate container log 
file
01-Oct-2025 12:06:29.940 SEVERE [main] 
org.apache.catalina.core.StandardContext.startInternal Context [/guacamole] 
startup failed due to previous errors
01-Oct-2025 12:06:29.945 INFO [main] 
org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application 
archive [/var/lib/tomcat11/webapps/guacamole.war] has finished in [942] ms
01-Oct-2025 12:06:29.946 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDirectory Deploying web 
application directory [/var/lib/tomcat11/webapps/ROOT]
01-Oct-2025 12:06:30.304 INFO [main] 
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for 
TLDs yet contained no TLDs. Enable debug logging for this logger for a complete 
list of JARs that were scanned but no TLDs were found in them. Skipping 
unneeded JARs during scanning can improve startup time and JSP compilation time.
01-Oct-2025 12:06:30.306 INFO [main] 
org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web 
application directory [/var/lib/tomcat11/webapps/ROOT] has finished in [360] ms
01-Oct-2025 12:06:30.309 INFO [main] org.apache.coyote.AbstractProtocol.start 
Starting ProtocolHandler ["http-nio-8080"]
01-Oct-2025 12:06:30.316 INFO [main] org.apache.catalina.startup.Catalina.start 
Server startup in [2375] milliseconds

Looking at the localhost

01-Oct-2025 12:06:29.940 SEVERE [main] 
org.apache.catalina.core.StandardContext.listenerStart Error configuring 
application listener of class 
[org.apache.guacamole.GuacamoleServletContextListener]
        java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
                at java.base/java.lang.ClassLoader.defineClass1(Native Method)
                at 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
                at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2170)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:696)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1189)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1059)
                at java.base/java.lang.ClassLoader.defineClass1(Native Method)
                at 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
                at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2170)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:696)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1189)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1059)
                at 
org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:482)
                at 
org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:465)
                at 
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
                at 
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3943)
                at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4438)
                at 
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:566)
                at 
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
                at 
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:925)
                at 
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1842)
                at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
                at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
                at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:125)
                at 
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:730)
                at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:381)
                at 
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1581)
                at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:265)
                at 
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
                at 
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
                at 
org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
                at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:743)
                at 
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:769)
                at 
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1164)
                at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160)
                at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
                at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:149)
                at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716)
                at 
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
                at 
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at 
org.apache.catalina.core.StandardService.startInternal(StandardService.java:412)
                at 
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at 
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:866)
                at 
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:759)
                at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
                at java.base/java.lang.reflect.Method.invoke(Method.java:565)
                at 
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
                at 
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:477)
        Caused by: java.lang.ClassNotFoundException: 
javax.servlet.ServletContextListener
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
                at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1059)
                ... 55 more

Is the error  "Caused by: java.lang.ClassNotFoundException: 
javax.servlet.ServletContextListener at 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)"
 caused by a packaging error in the guacamole-1.6.0.war file?


Kind Regards


Russell



IT Solutions Email Disclaimer - This e-mail and any files transmitted with it 
contain information which may be confidential and which may also be privileged 
and is intended solely for the use of the individual or entity to whom it is 
addressed. Unless you are the intended recipient you may not copy or use it, or 
disclose it to anyone else. Any opinions expressed are that of the individual 
and not necessarily that of IT Solutions Ltd. If you have received this e-mail 
in error please notify the sender by return. For further information on IT 
Solutions visit https://www.itsolutions.ie<https://www.itsolutions.ie/>


IT Solutions Email Disclaimer - The information contained in this email 
message, including any files transmitted with it, is confidential and may be 
legally privileged.

This e-mail is intended only for the personal attention of the stated 
addressee(s). Any access to this email, including any files transmitted with 
it, by any other person is unauthorised. If you are not an addressee, you must 
not disclose, copy, circulate or in any other way use or rely on the accuracy 
or completeness of the information contained in this email or any files 
transmitted with it.

If you have received this email in error, please inform the sender immediately 
and delete it and all copies from your system. You may not forward this email 
without the permission of the authorised sender.

The views expressed in this email are those of the author, and do not 
necessarily represent the views of IT Solutions or its affiliates. Internet 
communications are not secure and IT Solutions cannot therefore accept legal 
responsibility for the contents of this message nor for any damage caused by 
viruses. This email has been scanned at the originating end. For further 
information on IT Solutions visit https://www.itsolutions.ie

Reply via email to