Рубрики
Без рубрики

NoClassDefFoundError: джакарта/сервлет/ServletInputStream

Мы можем исправить это, включив jakarta.servlet-api@5.0.0 .

Автор оригинала: mkyong.

Использование Jersey 3x + Jetty для разработки конечных точек, но при запуске приложения возникает следующая ошибка.

Exception in thread "main" java.lang.NoClassDefFoundError: jakarta/servlet/ServletInputStream
  at org.glassfish.jersey.jetty.JettyHttpContainerProvider.createContainer(JettyHttpContainerProvider.java:43)
  at org.glassfish.jersey.server.ContainerFactory.createContainer(ContainerFactory.java:58)
  at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createServer(JettyHttpContainerFactory.java:110)
  at com.mkyong.MainApp.startServer(MainApp.java:22)
  at com.mkyong.MainApp.main(MainApp.java:32)

Caused by: java.lang.ClassNotFoundException: jakarta.servlet.ServletInputStream
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
  ... 5 more

1. джакарта/сервлет/* и API сервлетов 5.0

Начиная с Servlet API 5.0 , API переместился из пакета javax.servlet в jakarta.servlet .

Ниже приведена краткая история API сервлетов

API перенесен из пакета javax.servlet в jakarta.servlet 12 июня 2020 года Джакарта EE 9 Сервлет 5.0
Переименован из торговой марки “Java”, пакет API все еще javax.сервлет 13 августа 2019 года Джакарта EE 8 Сервлет 4.0.3
все еще javax.сервлет Сентябрь 2017 Java EE 8 Сервлет 4.0
все еще javax.сервлет Май 2013 года Java EE 7 Сервлет 3.1

2. Решение

Некоторые библиотеки зависят от API сервлета 5.0 , который не может быть найден в зависимости проекта. Мы можем исправить это, включив следующее jakarta.servlet-api@5.0.0 :

  
      jakarta.servlet
      jakarta.servlet-api
      5.0.0
  

3. Рекомендации

Оригинал: “https://mkyong.com/java/java-lang-noclassdeffounderror-jakarta-servlet-servletinputstream/”