Bug 2428278 - Guacamole presently incompatible with Tomcat 10
Summary: Guacamole presently incompatible with Tomcat 10
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: guacamole-server
Version: 43
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Robert Scheck
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-01-09 16:04 UTC by W. Michael Petullo
Modified: 2026-01-09 16:04 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description W. Michael Petullo 2026-01-09 16:04:21 UTC
Description of problem:
The portion of Guacamole built upon Tomcat does not yet support Tomcat 10. Fedora 43 migrated from Tomcat 9 to Tomcat 10 (https://fedoraproject.org/wiki/Changes/Tomcat10ChangeProposal). This means that a full Guacamole installation will not run on Fedora 43. The workaround is to install the Tomcat 9 packages from Fedora 42.

Version-Release number of selected component (if applicable):
guacd-1.6.0-3.fc43.x86_64

How reproducible:
Always

Steps to Reproduce:
Start Tomcat with Guacamole installed (https://dist.apache.org/repos/dist/release/guacamole/1.6.0/binary/guacamole-1.6.0.war) using "systemctl start tomcat".

Actual results:
09-Jan-2026 15:08:38.084 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:2362)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2227)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:814)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1341)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1189)
		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:2362)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2227)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:814)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1341)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1189)
		at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:487)
		at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:469)
		at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
		at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3973)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4474)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:655)
		at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:965)
		at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903)
		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:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:125)
		at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:769)
		at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:420)
		at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1621)
		at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
		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:776)
		at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:773)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:149)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
		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:870)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.startup.Catalina.start(Catalina.java:761)
		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:345)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
	Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1380)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1189)
		... 58 more
09-Jan-2026 15:08:38.084 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Skipped installing application listeners due to previous error(s)

Expected results:
Guacamole should run.

Additional info:
Here is the effort to port Guacamole to Tomcat 10:

https://issues.apache.org/jira/browse/GUACAMOLE-1325
https://github.com/apache/guacamole-client/pull/972


Note You need to log in before you can comment on or make changes to this bug.