You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Rene Gielen (JIRA)" <ji...@apache.org> on 2014/08/13 16:07:12 UTC
[jira] [Commented] (WW-4347) Support for JDK 8
[ https://issues.apache.org/jira/browse/WW-4347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14095496#comment-14095496 ]
Rene Gielen commented on WW-4347:
---------------------------------
Java 8 byte code is officially supported since ASM 5. XWork, however, still uses ASM 3.3
Unfortunately ASM 5 is not a drop-in replacement.
I've stumbled upon the following question on SO:
http://stackoverflow.com/questions/24455349/make-struts-2-compatible-with-java-8-legacy-asm-3
The author answers his own question by stating he had to patch XWork. He created the following patch:
https://gist.github.com/anonymous/017b23c1d7c97c37d167
We should review the patch and check for downward compatibility. If it renders OK, we should switch to ASM 5 with XWork patch included.
> Support for JDK 8
> -----------------
>
> Key: WW-4347
> URL: https://issues.apache.org/jira/browse/WW-4347
> Project: Struts 2
> Issue Type: New Feature
> Components: Core Actions
> Affects Versions: 2.3.16.3
> Reporter: Erik Berg
> Fix For: 2.5
>
> Attachments: jdk8test.tar
>
>
> Struts stumbles when encountering lambda expressions in JDK 8. Looks like org.objwectweb.asm dependency needs to be updated...
> {code}
> 2014-05-18 10:21:41,111 ERROR (com.opensymphony.xwork2.util.finder.ClassFinder:38) - Unable to read class [jdk8test.actions.Lambda]
> java.lang.ArrayIndexOutOfBoundsException: 52264
> 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)
> at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
> at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
> at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
> at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
> at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
> at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:744)
> {code}
> Simple test case attached.
> tar xvf jdk8test.tar
> cd jdk8test
> mvn tomcat7:run
> http://localhost:8080/jdk8test
--
This message was sent by Atlassian JIRA
(v6.2#6252)