public static void main(String[] args) { String packageExclude = "org.apache.struts2.*"; String classPackageName = "org.apache.struts2";
WildcardHelper wildcardHelper = new WildcardHelper();int[] packagePattern = wildcardHelper.compilePattern(packageExclude); System.out.println(wildcardHelper.match(new HashMap<>(), classPackageName, packagePattern));
}The output is 'false', so the pattern "org.apache.struts2.*" does not match with the package "org.apache.struts2". Maybe you'll know immediately what the problem is. Otherwise, I can take another look and find the error in the match method... just let me know.
On 19.12.24 19:11, Lukasz Lenart wrote:
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 <schlitt...@liwa.de> 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--------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For additional commands, e-mail: dev-h...@struts.apache.org
smime.p7s
Description: S/MIME Cryptographic Signature