在部署应用程序时,打包由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)
答案 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。