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?

kind regards, Florian

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to