You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Payara Micro服务器未生成REST端点(404错误)排查求助

解决Payara Micro 6部署Java EE 8应用后REST端点404错误

核心问题:版本兼容性不匹配

Payara Micro 6基于Jakarta EE 9.1/10规范,使用jakarta.*命名空间;而你通过javaee8-essentials-archetype生成的项目是Java EE 8规范,使用javax.*命名空间。两者注解包名不兼容,导致Payara Micro 6无法识别你的JAX-RS资源类和配置类,因此REST端点无法被注册。

两种解决方案

方案1:降级Payara Micro到5.x版本(快速解决,无需修改代码)

Payara Micro 5.x完全支持Java EE 8规范,直接替换服务器即可:

  • 下载Payara Micro 5的稳定版本(如5.2022.5)
  • 重新执行部署命令:
    java -jar 'G:\Workspace\payara-micro-5.2022.5.jar' --deploy .\target\javaee-demo.war --port 8080
    
  • 再次访问http://localhost:8080/javaee-demo/resources/ping即可正常返回结果。

方案2:迁移项目到Jakarta EE 9.1(适配Payara Micro 6)

如果你想继续使用Payara Micro 6,需要将项目从Java EE 8迁移到Jakarta EE 9.1:

步骤1:更新pom.xml依赖

替换原有依赖为Jakarta EE 9.1和对应MicroProfile版本:

<dependencies>
    <!-- 替换Java EE 8 API为Jakarta EE 9.1 API -->
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-api</artifactId>
        <version>9.1.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- 替换MicroProfile 2.0为5.0(适配Jakarta EE 9.1) -->
    <dependency>
        <groupId>org.eclipse.microprofile</groupId>
        <artifactId>microprofile</artifactId>
        <version>5.0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
</dependencies>

同时更新Java版本为Payara Micro 6支持的11+(比如11):

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

步骤2:修改代码中的注解包名

将所有javax.*的注解替换为jakarta.*:

  • PingResource类:
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import org.eclipse.microprofile.config.inject.ConfigProperty;

@Path("ping")
public class PingResource {

    @Inject
    @ConfigProperty(name = "message")
    String message;

    @GET
    public String ping() {
        return this.message + " Jakarta EE with MicroProfile 5!";
    }
}
  • JAXRSConfiguration类:
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;

@ApplicationPath("resources")
public class JAXRSConfiguration extends Application {

}

步骤3:重新编译部署

执行mvn clean package重新打包,再用Payara Micro 6部署,即可正常访问REST端点。

额外排查点

如果以上方案仍未解决,检查以下内容:

  • 确认war包结构:target/javaee-demo/WEB-INF/classes下是否存在PingResource.class和JAXRSConfiguration.class,确保编译后的类文件已正确打包。
  • 查看Payara Micro启动日志,是否有类加载失败或JAX-RS注册的错误信息,定位具体异常。

内容的提问来源于stack exchange,提问作者Python_user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:55:39