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.
已经有一个 tracker 到 ow2.asm
无效的版本错误,您可以关注它。
打包由 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.
已经有一个 tracker 到 ow2.asm
无效的版本错误,您可以关注它。