' org.h2.server.web.webservlet'无法分配给Javax.Servlet.Servlet,Jakarta.Servlet.Servlet'

发布于 2025-02-06 18:51:10 字数 1562 浏览 0 评论 0 原文

我正在使用 jakarta.jakartaee-api 9.1.0 H2 2.1.212

当我尝试将 H2控制台servlet 添加到Web.xml文件时,我会遇到此错误:

'org.h2.server.web.webservlet'无法分配给 'javax.servlet.servlet,jakarta.servlet.servlet'

这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="5.0"
         xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd">
    <data-source>
        <name>java:global/dataSource</name>
        <class-name>org.h2.jdbcx.JdbcDataSource</class-name>
        <url>jdbc:h2:mem:test;MODE=LEGACY</url>
    </data-source>

    <servlet>
        <servlet-name>H2Console</servlet-name>
        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>H2Console</servlet-name>
        <url-pattern>/h2/*</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>jakarta.ws.rs.core.Application</servlet-name>
    </servlet>
    <servlet-mapping>
        <servlet-name>jakarta.ws.rs.core.Application</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

如何解决错误?

I'm using jakarta.jakartaee-api 9.1.0 and H2 2.1.212.

I get this error when I try to add H2 Console Servlet to web.xml file:

'org.h2.server.web.WebServlet' is not assignable to
'javax.servlet.Servlet,jakarta.servlet.Servlet'

Here is my web.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="5.0"
         xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd">
    <data-source>
        <name>java:global/dataSource</name>
        <class-name>org.h2.jdbcx.JdbcDataSource</class-name>
        <url>jdbc:h2:mem:test;MODE=LEGACY</url>
    </data-source>

    <servlet>
        <servlet-name>H2Console</servlet-name>
        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>H2Console</servlet-name>
        <url-pattern>/h2/*</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>jakarta.ws.rs.core.Application</servlet-name>
    </servlet>
    <servlet-mapping>
        <servlet-name>jakarta.ws.rs.core.Application</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

How can I fix the error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安静被遗忘 2025-02-13 18:51:10

Jakarta。*包装

雅加达9和9.1的软件包名称空间是 jakarta。*。 this 命名在甲骨文过渡时,将Java EE移交给Eclipse Foundation,在那里它变成了Jakarta EE。

我在GitHub上的H2代码库戳了一下,发现 jakartawebservlet 。这似乎是同一条servlet,但使用 jakarta。*软件包。您可能可以从:

<servlet-class>org.h2.server.web.WebServlet</servlet-class>

…转换为:

<servlet-class>org.h2.server.web.JakartaWebServlet</servlet-class>

请参阅 h2文档。

jakarta.* packages

The package namespace for Jakarta 9 and 9.1 is jakarta.*. This changed from the old javax.* naming during the transition of Oracle handing over Java EE to the Eclipse Foundation where it became Jakarta EE.

I poked around the H2 codebase on GitHub, and found JakartaWebServlet. This seems to be the same Servlet but using the jakarta.* packages. You may be able to switch from:

<servlet-class>org.h2.server.web.WebServlet</servlet-class>

… to:

<servlet-class>org.h2.server.web.JakartaWebServlet</servlet-class>

See the H2 documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文