3

打包由 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)
4

2 回答 2

2

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

我们在jetty.project#1758中遇到了类似的问题,我想通过自己构建 jetty.project 来尝试解决这个问题,但最终意识到这org.ow2.asm会让我陷入困境。


maven 上最新可用的 asm 版本是:

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

如果是码头(也可能是 swarm),他们无法集成它,因为6.0_BETA它不是有效的OSGI 版本号

引起:java.lang.IllegalArgumentException:无效范围 "[6.0_BETA,6.0_BETA]":无效版本"6.0_BETA":非数字 "0_BETA"

与上述相关的阅读码头如何尝试解决它

已经有一个无效版本错误的跟踪器ow2.asm您可以关注它。

于 2017-09-27T14:07:28.040 回答
2

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

于 2017-09-27T13:56:54.607 回答