Re: Struts 7: action class finder

Lukasz Lenart <[email protected]>
Newsgroups gmane.comp.jakarta.struts.devel
Message-ID <CAMopvkPFBaXCfm1Hm+Ac4u4348C7w3A9yJyP0-O=w7ruBs8Jog@mail.gmail.com>
Hm... but classes in org.apache.struts2 are excluded from scanning
https://github.com/apache/struts/blob/main/plugins/convention/src/main/resources/struts-plugin.xml#L57

Could you double check if you don't have a copy of older JARs somewhere

czw., 19 gru 2024 o 17:27 Florian Schlittgen <[email protected]> napisał(a):
>
> Hi,
>
> I currently migrating an application from struts 6 to 7 using the
> pre-release. I am using the convention plugin and I am getting the
> following error:
>
> ERROR [org.apache.struts2.convention.DefaultClassFinder] (default
> task-1) Error loading class [org.apache.struts2.XWorkTestCase]:
> java.lang.NoClassDefFoundError: Failed to link
> org/apache/struts2/XWorkTestCase (Module "deployment.coreweb.war" from
> Service Module Loader): junit/framework/TestCase
>      at java.base/java.lang.ClassLoader.defineClass1(Native Method)
>      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
>      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
>      at
> org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:351)
>      at
> org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
>      at
> org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:276)
>      at
> org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:79)
>      at org.jboss.modules.Module.loadModuleClass(Module.java:797)
>      at
> org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:192)
>      at
> org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
>      at
> org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
>      at
> org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
>      at
> deployment.coreweb.war//org.apache.struts2.util.finder.ClassLoaderInterfaceDelegate.loadClass(ClassLoaderInterfaceDelegate.java:38)
>      at
> deployment.coreweb.war//org.apache.struts2.util.finder.ClassFinder$ClassInfo.get(ClassFinder.java:228)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.PackageBasedActionConfigBuilder$1.test(PackageBasedActionConfigBuilder.java:663)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.PackageBasedActionConfigBuilder$1.test(PackageBasedActionConfigBuilder.java:650)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.DefaultClassFinder.findClasses(DefaultClassFinder.java:280)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:432)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:388)
>      at
> deployment.coreweb.war//org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:55)
>      at
> deployment.coreweb.war//org.apache.struts2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:317)
>      at
> deployment.coreweb.war//org.apache.struts2.config.ConfigurationManager.reload(ConfigurationManager.java:227)
>      at
> deployment.coreweb.war//org.apache.struts2.config.ConfigurationManager.initialiseConfiguration(ConfigurationManager.java:84)
>      at
> deployment.coreweb.war//org.apache.struts2.config.ConfigurationManager.wasConfigInitialised(ConfigurationManager.java:72)
>      at
> deployment.coreweb.war//org.apache.struts2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61)
>      at
> deployment.coreweb.war//org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:1141)
>      at
> deployment.coreweb.war//org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:643)
>      at
> deployment.coreweb.war//org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:43)
>      at
> deployment.coreweb.war//org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:58)
>
> In PackageBasedActionConfigBuilder, all potential action classes are
> being checked (line 663). XWorkTestCase is in the candidates list but
> without having junit:junit as a dependency (which is declared as
> optional) this class cannot be loaded and tested. In this case,
> NoClassDefFoundError is thrown which is not being caught (line 664). I
> think the catch statement has to be extended to handle
> NoClassDefFoundError accordingly.
> What do you think, do you want me to create a JIRA ticket? (or pull
> request?)
>
> regards,
> Florian
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.