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 身份验证?