首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在使用JakartaEE并创建一个"hello“类型的restfulAPI,通过访问URL无法获得返回字符串

我正在使用JakartaEE并创建一个"hello“类型的restfulAPI,通过访问URL无法获得返回字符串
EN

Stack Overflow用户
提问于 2021-08-31 14:30:40
回答 1查看 416关注 0票数 1

提供我在这个短片中所做的每一步:https://youtu.be/hbSr8sRYuOk

这里的项目代码:https://github.com/LJonn/restapiHelloWorld

在tomcat上运行本地服务器上的所有内容。

我已经有很长一段时间了,问题出在哪里.我尝试了这样的URL:"http://localhost:8080/api/hello“和"http://localhost:8080/helloworld/api/hello”,并希望其中一个能工作。

运行http://localhost:8080/manager/text/list显示,helloworld.war部署良好,工作正常:

OK - Listed applications for virtual host [localhost]

/:running:0:ROOT

/helloworld:running:0:helloworld

/examples:running:0:examples

/host-manager:running:0:host-manager

/manager:running:0:manager

/docs:running:0:docs

那么,为什么我仍然得到HTTP状态404页呢?我能做些什么来发现这个问题呢?

这些是我的项目的Maven依赖项:

代码语言:javascript
复制
  <dependencies>
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-web-api</artifactId>
        <version>9.1.0</version>
        <scope>provided</scope>
    </dependency>
  </dependencies>

由于的评论,似乎从Tomcat更改为TomEE可能解决了这个问题,但现在我遇到了一个问题,.war文件无法部署/启动,可能是某种版本兼容性问题,tomcat管理器GUI在尝试启动.war文件时会出现此错误:

代码语言:javascript
复制
FAIL - Application at context path [/helloworld] could not be started
FAIL - Encountered exception [org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/helloworld]]]

从管理器日志来看,它似乎与注释和Java 16有关?

代码语言:javascript
复制
...
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 60
        at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:195)
        at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:176)
        at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:162)
        at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:283)
        at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1176)
        ... 52 more
01-Sep-2021 15:25:02.185 INFO [http-nio-8080-exec-3] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost'

我试图检查Eclipse上的JRE版本,它是16.0.2,在我看来,同样的版本正在tomcat上运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 12:55:50

Tomcat10.0和10.1是而不是完整的JakartaEE9.1应用服务器:您不应该使用jakarta.jakartaee-web-api工件,这意味着运行时支持所有JakartaEE9.1 https://jakarta.ee/specifications/webprofile/技术。

Tomcat没有实现Web配置文件中所需的所有规范。至少还有其他四种产品。关于Jakarta 9.1,请参见这份清单

  • Apache TomEE
  • 月食玻璃鱼
  • IBM开放自由
  • 红帽WildFly

您可以在Tomcat网站上找到受支持的技术列表,对于Tomcat 10,它们会转换成这个列表,显示为一个Maven POM片段。

代码语言:javascript
复制
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet.jsp</groupId>
      <artifactId>jakarta.servlet.jsp-api</artifactId>
      <version>3.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.el</groupId>
      <artifactId>jakarta.el-api</artifactId>
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.websocket</groupId>
      <artifactId>jakarta.websocket-api</artifactId>
      <version>2.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.security.auth.message</groupId>
      <artifactId>jakarta.security.auth.message-api</artifactId>
      <version>2.0.0-RC1</version>
      <scope>provided</scope>
    </dependency>

从Servlet3.0开始,可以使用servlet封堵机制添加附加的Jakarta规范。要使用JAX,您需要添加:

代码语言:javascript
复制
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>3.0.2</version>
</dependency>

或者使用其他JAX实现的等效配置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69000553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档