JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final

Posted

技术标签:

【中文标题】JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 8 + maven 有效【英文标题】:JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 not found, but JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 8 + maven works 【发布时间】:2018-08-16 11:40:52 【问题描述】:

我有一个简单的 Hello World 示例 JAX-RS 项目。真的很简单也很愚蠢。只是最小的配置,我打算在未来增强它,想象一下这样的事情:https://robferguson.org/blog/2016/12/02/getting-started-with-resteasy/。

好吧,我的问题是,当我将 Java 版本设置为“1.9”时,我总是收到“404 not found”错误。但是当我将它改回 1.8,mvn clean install and deploy 时,它工作正常。 Java 版本是唯一的 delta,它决定了它是否工作。如何使它与 java 9 一起工作? 我确实使用 maven 3.5 和 jdk 9.0.4。

工作正常:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

返回 404:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <source>1.9</source>
            <target>1.9</target>
        </configuration>
    </plugin>

其他所有代码都保持不变。 Wildfly 控制台中没有出现错误 - 它的行为好像路径错误,但事实并非如此,因为切换回 1.8 后,它在相同的路径下工作正常。

【问题讨论】:

我认为由于模块限制,您的资源不再在 Java 9 中开始扫描。 您是否知道任何描述如何处理模块限制和 JAX-RS 的资源? 这本书可能会有所帮助:javamodularity.com - 作者描述了 Java 9 中组件扫描失败的一些情况,除非采取某些措施。 【参考方案1】:

这似乎与 Wildfly 12 中包含的 Jandex 2.0.4 的问题有关。根据这张票:

https://issues.jboss.org/projects/WFLY/issues/WFLY-9961?filter=allissues

恢复到 jandex 2.0.3 将解决此问题。 Wildfly 13 将包含一个固定版本的 jandex。

【讨论】:

以上是关于JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final的主要内容,如果未能解决你的问题,请参考以下文章

JAX-RS + JBoss 7.1.1 + RESTEasy:使用 CDI 的 NullPointException

使用JAX-RS resteasy和ContainerRequestFilter / ContainerResponseFilter记录请求

带有 Resteasy 的 JAX-RS:如何进行“超类”请求标头管理? [复制]

如何使用符合 JAX-RS 2.0 的 RESTEasy 客户端 API 启用 NTLM 身份验证?

使用 JAX-RS/RESTEasy 实现 CORS 的 Ajax 请求

将 Web 代理与 Java 8 JAX-RS RESTEasy 客户端一起使用