Jetty: NoClassDefFoundError

Artsiom Kotau picture Artsiom Kotau · Jan 6, 2017 · Viewed 7.4k times · Source

I have a pom where I configured jetty plugin in following way:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.4.0.v20161208</version>
     <configuration>
        <skip>${skipTests}</skip>
        <scanIntervalSeconds>10</scanIntervalSeconds>
        <stopPort>8005</stopPort>
        <stopKey>STOP</stopKey>
        <webAppSourceDirectory>${basedir}/target/${project.artifactId}-test</webAppSourceDirectory>
        <httpConnector>
          <port>45098</port>
          <idleTimeout>60000</idleTimeout>
        </httpConnector>
        <daemon>true</daemon>
      </configuration>
      <executions>
         <execution>
            <id>start-jetty</id>
            <phase>pre-integration-test</phase>
               <goals>
                  <goal>start</goal>
               </goals>
               <configuration>
                  <scanIntervalSeconds>0</scanIntervalSeconds>
               </configuration>
          </execution>
          <execution>
             <id>stop-jetty</id>
             <phase>post-integration-test</phase>
             <goals>
                <goal>stop</goal>
             </goals>
          </execution>
        </executions>
      </plugin>

But when the jetty stopping I get exception:

Exception in thread "Thread-4" java.lang.NoClassDefFoundError: org/eclipse/jetty/io/ManagedSelector$CloseEndPoints
at org.eclipse.jetty.io.ManagedSelector.doStop(ManagedSelector.java:135)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
at org.eclipse.jetty.io.SelectorManager.doStop(SelectorManager.java:257)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
at org.eclipse.jetty.client.AbstractHttpClientTransport.doStop(AbstractHttpClientTransport.java:87)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
at org.eclipse.jetty.client.HttpClient.doStop(HttpClient.java:255)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
at org.eclipse.jetty.websocket.client.WebSocketClient.doStop(WebSocketClient.java:379)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
at org.eclipse.jetty.websocket.jsr356.ClientContainer.doStop(ClientContainer.java:214)
at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
at org.eclipse.jetty.util.thread.ShutdownThread.run(ShutdownThread.java:138)

I tried to add dependency section with jetty server lib to plugin, but it didn't have success.

Answer

Mickael picture Mickael · Jan 6, 2017

I think you need to add a dependency to your plugin. ManagedSelector is available in the following dependency :

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-io</artifactId>
    <version>9.4.0.v20161208</version>
</dependency>

You can update your pom.xml like this :

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.4.0.v20161208</version>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-io</artifactId>
      <version>9.4.0.v20161208</version>
    </dependency>
  </dependencies>
  <configuration>
    <skip>${skipTests}</skip>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <stopPort>8005</stopPort>
    <stopKey>STOP</stopKey>
    <webAppSourceDirectory>${basedir}/target/${project.artifactId}-test</webAppSourceDirectory>
    <httpConnector>
      <port>45098</port>
      <idleTimeout>60000</idleTimeout>
    </httpConnector>
    <daemon>true</daemon>
  </configuration>
  <executions>
    <execution>
      <id>start-jetty</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
      <configuration>
        <scanIntervalSeconds>0</scanIntervalSeconds>
      </configuration>
    </execution>
    <execution>
      <id>stop-jetty</id>
      <phase>post-integration-test</phase>
      <goals>
        <goal>stop</goal>
      </goals>
    </execution>
  </executions>
</plugin>