Make Struts 2 compatible with Java 8 (legacy ASM 3)

I am using Struts 2 with a conference plugin. Struts 2 is dependent on ASM 3.3, which is incompatible with Java 8. It does not detect action classes that contain lambdas or method references.

An exception:

2014-06-27 18:47:32,958 ERROR main/com.opensymphony.xwork2.util.finder.ClassFinder: Unable to read class [my.project.Action] java.lang.ArrayIndexOutOfBoundsException: 30305 at org.objectweb.asm.ClassReader.readClass(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:717) at com.opensymphony.xwork2.util.finder.ClassFinder.<init>(ClassFinder.java:112) at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:268) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:489) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) 

ASM 5 seems to support Java 8, but Struts is not binary compatible.

Are there any workarounds to solve these problems? Right now I am considering a Struts / XWork fix.

+6
source share
1 answer

Guess what - I had to fix this thing.

Its essence: https://gist.github.com/anonymous/017b23c1d7c97c37d167

+4
source

Source: https://habr.com/ru/post/971424/


All Articles