启动Solr时没有发现类定义错误jakarta/servlet/http/HttpServlet响应

hgqdbh6s  于 2023-03-02  发布在  Solr
关注(0)|答案(1)|浏览(323)

在Java 11中使用Solr 8.11.2(Jetty 9.4)时,我们在启动时遇到以下错误:
java.lang.NoClassDefFoundError:雅加达/服务小程序/http/HttpServlet响应

java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
        at org.eclipse.jetty.start.Main.start(Main.java:491)
        at org.eclipse.jetty.start.Main.main(Main.java:77)
Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServletResponse
        at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
...
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.construct(XmlConfiguration.java:1031)
...
        at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:380)
        at org.eclipse.jetty.xml.XmlConfiguration.lambda$main$3(XmlConfiguration.java:1893)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1857)
        ... 7 more
Caused by: java.lang.ClassNotFoundException: jakarta.servlet.http.HttpServletResponse
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 23 more

即使我们知道javax.*jakarta.*的移动,我们也不明白为什么jakarta. * 类甚至试图被加载。
Jetty 9.4仍在使用/提供javax.*
似乎导致失败的jetty.xml配置文件也没有任何对jakarta的引用。

nfeuvbwi

nfeuvbwi1#

这个问题实际上是由我们添加到Solr的外部库引起的:使用logback 1.2工作正常,但升级到1.4是上述问题的根本原因。
这是因为logback1.4的目标是jakarta.*,我们在Jetty配置中引用了一个logback类来访问日志。
没有升级到logback 1.4,只有1.3才是正确的解决方案。

相关问题