jupnp/jupnp

java.lang.NoClassDefFoundError: javax/servlet/Servlet

Closed this issue · 1 comments

I am trying to use this library to create a UPnP service and am encountering a NoClassDefFoundError for javax/servlet/Servlet.

I've following the admittedly rough documentation and have this so far:

 upnpService = new UpnpServiceImpl(new DefaultUpnpServiceConfiguration());

 logger.info("UPNP service created, searching for devices, please wait...");

 ControlPoint controlPoint = upnpService.getControlPoint();
 upnpService.startup();

 if (controlPoint != null) {
     controlPoint.search(new STAllHeader());
 } else {
     logger.error("ControlPoint is null, unable to perform search.");
 }

I'm using jupnp 2.7.1 and Java 17.

If you want to use Jetty with jUPnP you have to manually add a few dependencies to your POM:

  <properties>
    <jetty.version>9.4.53.v20231009</jetty.version>
    <servlet.api.version>3.1.0</servlet.api.version>
    <slf4j.version>1.7.36</slf4j.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${servlet.api.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-client</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlet</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
  </dependencies>