2014-06-27 18 views
6

Używam wtyczki Struts 2 z konwencją. Struts 2 zależy od ASM 3.3, który nie jest zgodny z językiem Java 8. Nie można wykryć klas działania zawierających lambdy lub odwołania do metod.Uczyń Struts 2 zgodnym z Java 8 (starsza wersja ASM 3)

Wyjątek:

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 wydaje się wspierać Java 8 ale Struts nie jest binarnie zgodny z tym.

Czy są jakieś obejścia tego problemu? W tej chwili rozważam łatanie Struts/XWork.

Odpowiedz

4

Zgadnij co - musiałem to załatać.

Istota go: https://gist.github.com/anonymous/017b23c1d7c97c37d167

+0

Great! Czy możemy użyć twojej łatki i zastosować ją do źródła XWork? –

+0

@ LukaszLenart, na pewno możesz! W każdym razie to banalne, żadnych oryginalnych pomysłów. – alamar

+1

Świetnie! Wielkie dzięki! Powiązany bilet JIRA https://issues.apache.org/jira/browse/WW-4347 –