[
https://issues.apache.org/jira/browse/WW-4646?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15420643#comment-15420643
]
Sebastian Götz commented on WW-4646:
------------------------------------
Thank you for that Lukasz.
I was not Aware of that plugin. We use Apache Ivy for dependency resolution.
But after excluding transitive asm 3.3 and asm-commons 3.3 dependencies from
struts-core 2.5.2 and adding explicit asm 5.1 and asm-commons 5.1 I still have
problems. From the stacktrace I would guess it is related to the convention
plugin (we use Action annotations for URl mapping). Will this be fixed as well
in 2.5.3?
{noformat}
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
at
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:397)
at
org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:379)
at
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:335)
at
org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at
com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:197)
at
com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at
org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:897)
at
org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:437)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:478)
at
org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75)
at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63)
at
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4573)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5188)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
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:745)
Caused by: java.lang.ClassNotFoundException:
org.objectweb.asm.commons.EmptyVisitor
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
... 30 more
{noformat}
> remove ASM 3 from struts2
> -------------------------
>
> Key: WW-4646
> URL: https://issues.apache.org/jira/browse/WW-4646
> Project: Struts 2
> Issue Type: Bug
> Components: Core Actions, Plugin - Convention
> Affects Versions: 2.5
> Reporter: adam brin
> Assignee: Lukasz Lenart
> Fix For: 2.5.3
>
>
> Pulling from the discussion on the struts2-users list:
> Struts2 maintains two different versions of ASM 5x for the Convention plugin
> and 3x for the rest of struts. A basic search of the codebase suggests that
> the only direct uses of ASM are via the ClassFinder class in Xwork and used
> by the Convention plugin. Based on this
> [https://issues.apache.org/jira/browse/WW-4435] and
> [http://www.philvarner.com/2015/02/05/using-apache-cxf-2-7-struts2-2-3-and-asm-5-with-maven/],
> I wonder if it might make sense to:
> 1. remove the direct dependency on ASM entirely for XWork and Struts2 in
> general
> 2. move the ClassFinder class and direct dependencies the convention plugin
> and make them explicitly dependent on ASM 5x.
> 3. Like other apps like Spring, repackage/embed ASM into it's own package
> tree so it can live with other versions of ASM.
> -----
> the core issue for us is that there are overlaps between ASM 5 and ASM 3, and
> become explicit when launching our app with the maven-jetty-plugin. Classes
> with the same name in both packages though they have different groupIds and
> thus cause exceptions in startup either due to (a) Missing Classes like
> EmptyVisitor or (b) incompatible classes. It's our hope that by removing this
> dual dependency, we can take advantage of Java8 features and also simplify
> dependency management in our pom.
> thanks
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)