java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Hi folks,

I’m simply trying to run the pre-packaged tomcat camunda release on ubuntu linux. I’ve downloaded the bundled tomcat + camunda release and am trying to run it by executing the start-camunda shell script. I swear it ran initially, but after me uninstalling and reinstalling the openjdk and stuff it no longer works.

Here is a complete, fresh log from a just-extracted download …

25-Feb-2019 19:03:41.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/9.0.5
25-Feb-2019 19:03:41.347 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Feb 6 2018 21:42:23 UTC
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         9.0.5.0
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.15.0-1037-azure
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-11-openjdk-amd64
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           10.0.2+13-Ubuntu-1ubuntu0.18.04.4
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /home/ryan/camunda/server/apache-tomcat-9.0.5
25-Feb-2019 19:03:41.348 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /home/ryan/camunda/server/apache-tomcat-9.0.5
25-Feb-2019 19:03:41.349 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
25-Feb-2019 19:03:41.349 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=./server/apache-tomcat-9.0.5/conf/logging.properties
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx512m
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256m
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=./server/apache-tomcat-9.0.5
25-Feb-2019 19:03:41.350 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=./server/apache-tomcat-9.0.5
25-Feb-2019 19:03:41.351 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=./server/apache-tomcat-9.0.5/temp
25-Feb-2019 19:03:41.351 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
25-Feb-2019 19:03:41.491 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
25-Feb-2019 19:03:41.527 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
25-Feb-2019 19:03:41.542 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
25-Feb-2019 19:03:41.548 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
25-Feb-2019 19:03:41.554 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1471 ms
25-Feb-2019 19:03:42.008 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo ENGINE-08046 Found camunda bpm platform configuration in CATALINA_BASE/CATALINA_HOME conf directory [/home/ryan/camunda/server/apache-tomcat-9.0.5/conf/bpm-platform.xml] at 'file:/home/ryan/camunda/server/apache-tomcat-9.0.5/conf/bpm-platform.xml'
25-Feb-2019 19:03:42.296 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo ENGINE-12003 Plugin 'ProcessApplicationEventListenerPlugin' activated on process engine 'default'
25-Feb-2019 19:03:42.312 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo ENGINE-12003 Plugin 'SpinProcessEnginePlugin' activated on process engine 'default'
25-Feb-2019 19:03:42.322 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo SPIN-01010 Discovered Spin data format provider: org.camunda.spin.impl.json.jackson.format.JacksonJsonDataFormatProvider[name = application/json]
25-Feb-2019 19:03:42.582 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo SPIN-01010 Discovered Spin data format provider: org.camunda.spin.impl.xml.dom.format.DomXmlDataFormatProvider[name = application/xml]
25-Feb-2019 19:03:42.607 SEVERE [main] org.apache.catalina.startup.Catalina.start The required Server component failed to start so Tomcat is unable to start.
 org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
	at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormat.defaultJaxBContextProvider(DomXmlDataFormat.java:165)
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormat.<init>(DomXmlDataFormat.java:65)
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormat.<init>(DomXmlDataFormat.java:53)
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormatProvider.createInstance(DomXmlDataFormatProvider.java:32)
	at org.camunda.spin.DataFormats.registerProvider(DataFormats.java:152)
	at org.camunda.spin.DataFormats.registerCustomDataFormats(DataFormats.java:140)
	at org.camunda.spin.DataFormats.registerDataFormats(DataFormats.java:124)
	at org.camunda.spin.DataFormats.loadDataFormats(DataFormats.java:181)
	at org.camunda.spin.plugin.impl.SpinProcessEnginePlugin.preInit(SpinProcessEnginePlugin.java:39)
	at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.invokePreInit(ProcessEngineConfigurationImpl.java:943)
	at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.init(ProcessEngineConfigurationImpl.java:770)
	at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:761)
	at org.camunda.bpm.container.impl.jmx.services.JmxManagedProcessEngineController.start(JmxManagedProcessEngineController.java:34)
	at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.startService(MBeanServiceContainer.java:73)
	at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.startService(MBeanServiceContainer.java:59)
	at org.camunda.bpm.container.impl.deployment.StartProcessEngineStep.performOperationStep(StartProcessEngineStep.java:112)
	at org.camunda.bpm.container.impl.spi.DeploymentOperation.execute(DeploymentOperation.java:116)
	at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.executeDeploymentOperation(MBeanServiceContainer.java:156)
	at org.camunda.bpm.container.impl.spi.DeploymentOperation$DeploymentOperationBuilder.execute(DeploymentOperation.java:212)
	at org.camunda.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap.deployBpmPlatform(TomcatBpmPlatformBootstrap.java:72)
	at org.camunda.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap.lifecycleEvent(TomcatBpmPlatformBootstrap.java:57)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:763)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	... 7 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	... 33 more

25-Feb-2019 19:03:42.609 INFO [main] org.camunda.commons.logging.BaseLogger.logInfo ENGINE-08049 Camunda BPM platform stopped at 'Apache Tomcat/9.0.5'
25-Feb-2019 19:03:42.611 WARNING [main] org.apache.catalina.util.LifecycleBase.destroy Calling stop() on failed component [StandardServer[8005]] to trigger clean-up did not complete.
 org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_stop]) for component [StandardService[Catalina]] in state [INITIALIZED]
	at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:431)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:244)
	at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:791)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
	at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:293)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:686)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)

25-Feb-2019 19:03:42.612 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
25-Feb-2019 19:03:42.617 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]

It looks like there is an error with camunda trying to use or find a particular class type. After some googling around, it looks like this class was removed in recent versions of java? I have not coded in java in many years and am not experienced enough to understand if this is just me using an incorrect JRE version or what.

Here is my java information …

ryan@wib-camunda-dev:~/camunda$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

Any clues?

Looks like I had to uninstall the OpenJDK and install the Oracle JDK. It seems to work with that.