Search code examples
grailsjetty

Grails 3.3.2 deployment to Jetty 9.1.4.v20140401


How do I build my Grails 3.3.2 app to deploy it into a Jetty 9.1.4 contained I provide (not embedded)?

I am trying to run my Grails 3.3.2 app in a Jetty (v 9.1.4) container. I added the following to my build.gradle file.

ext['jetty.version'] = '9.1.4.v20140401'

And tried several combinations of the Spring Boot container starter.

compile "org.springframework.boot:spring-boot-starter-actuator"
provided "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.springframework.boot:spring-boot-starter-jetty"

but I continue to get errors.

2018-08-15 17:07:49.375:INFO:oejs.Server:main: jetty-9.1.4.v20140401
2018-08-15 17:07:51.722:WARN:oejj.ObjectMBean:main: 
java.lang.NoClassDefFoundError: org/eclipse/jetty/jmx/ObjectMBean
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:427)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:389)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)

I can run the app when embedding Jetty or Tomcat but not from my container.

I build the war from my project as follows.

 grails war

Solution

  • 2 things.

    1. You are missing jetty-jmx-<version>.jar dependency for that NoClassDefFoundError.

    2. Jetty 9.1.x is EOL (End of Life), consider upgrading. https://www.eclipse.org/jetty/documentation/current/what-jetty-version.html