wildfly swarm 部署崩溃 java 9

wildfly swarm deployment crash with java 9

打包由 wildfly swarm 生成器生成并使用 Java9 构建的 hello world 应用程序在部署应用程序时崩溃。 似乎原因是 swarm/undertow 对 org.ow2.asm:asm-all:5.0.4 的依赖性尚未 Java9 就绪。

是否有已知的解决方法,或者 swarm 准备好迎接 Java9 的已知日期?

堆栈跟踪是:

Caused by: java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.wildfly.swarm.jaxrs.internal.JAXRSArchiveImpl.isJAXRS(JAXRSArchiveImpl.java:117)
at org.wildfly.swarm.jaxrs.internal.JAXRSArchiveImpl.isJAXRS(JAXRSArchiveImpl.java:96)
at org.wildfly.swarm.jaxrs.JAXRSArchive.isJAXRS(JAXRSArchive.java:55)
at org.wildfly.swarm.jaxrs.internal.DefaultJAXRSWarDeploymentFactory.create(DefaultJAXRSWarDeploymentFactory.java:46)
at org.wildfly.swarm.jaxrs.internal.DefaultJAXRSWarDeploymentFactory$Proxy$_$$_WeldClientProxy.create(Unknown Source)
org.wildfly.swarm.container.runtime.deployments.DefaultDeploymentCreator.createDefaultDeployment(DefaultDeploymentCreator.java:69)

JDK 9 中的 class 文件是 v53.0,因此您需要 ASM 6。ASM 在遇到它支持的更新的 class 文件时总是抛出 IAE。

扫描字节码时 IllegalArgumentException 可能由不同的 class 版本引起,在您的情况下是由 org.ow2.asm:asm-all:5.0.4.

完成的

我们在 jetty.project#1758 中遇到了类似的问题,我试图通过自己构建 jetty.project 来解决这个问题,但最终意识到 org.ow2.asm 仍然会束缚我。


maven 上的 latest available version of asm 是:

<dependency>
   <groupId>org.ow2.asm</groupId>
   <artifactId>asm-all</artifactId>
   <version>6.0_BETA</version>
</dependency>

在 jetty 的情况下(并且可能还有 swarm)他们无法集成它,因为 6.0_BETA 不是有效的 OSGI 版本数:

Caused by: java.lang.IllegalArgumentException: invalid range "[6.0_BETA,6.0_BETA]": invalid version "6.0_BETA": non-numeric "0_BETA"

与上述相关read to how jetty tried solving it.

已经有一个 trackerow2.asm 无效的版本错误,您可以关注它。