wildfly swarm部署崩溃与java 9

时间:2017-09-27 13:54:14

标签: java java-9 wildfly-swarm

在部署应用程序时,打包由wildfly swarm生成器生成并使用Java9构建的hello world应用程序崩溃。 看起来原因是swarm / underow依赖于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)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

IllegalArgumentException可能是由扫描字节码时的不同类版本引起的,在{1}}中由你完成。

我们遇到了jetty.project#1758中遇到的类似问题,我将通过自己构建jetty.project来尝试解决这个问题,但最终意识到org.ow2.asm:asm-all:5.0.4会把我链接起来。

maven上的latest available version of asm是:

org.ow2.asm

如果是jetty(,也可能是swarm以及),他们无法集成,因为<dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm-all</artifactId> <version>6.0_BETA</version> </dependency> 不是有效的 OSGI版本号:< / p>

  

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

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

您可以关注"0_BETA"无效版本错误tracker