You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (Jira)" <ji...@apache.org> on 2025/12/02 17:43:00 UTC
[jira] [Created] (WW-5593) Convention plugin fails with NoClassDefFoundError when scanning classes with missing dependencies
Lukasz Lenart created WW-5593:
---------------------------------
Summary: Convention plugin fails with NoClassDefFoundError when scanning classes with missing dependencies
Key: WW-5593
URL: https://issues.apache.org/jira/browse/WW-5593
Project: Struts 2
Issue Type: Bug
Components: Plugin - Convention
Reporter: Lukasz Lenart
Fix For: 7.2.0
The convention plugin's {{PackageBasedActionConfigBuilder}} catches only {{ClassNotFoundException}} but not {{NoClassDefFoundError}} when testing action class candidates. This causes complete application startup failures instead of graceful degradation when classes have missing optional dependencies.
*Impact*:
- Application fails to start when convention plugin encounters classes with unavailable dependencies
- Particularly affects users setting struts.convention.action.includeJars
- Common during redeployment or with optional dependencies (e.g., JUnit for test classes)
*Current behavior* (PackageBasedActionConfigBuilder.java:664):
{code:java}
} catch (ClassNotFoundException ex) {
LOG.error("Unable to load class [{}]", classInfo.getName(), ex);
return false;
}
{code}
*Expected behavior*:
Should also catch NoClassDefFoundError, following the pattern used in DefaultClassFinder and other Struts core classes (DefaultInterceptorFactory, XmlDocConfigurationProvider).
*Proposed fix*:
{code:java}
} catch (ClassNotFoundException | NoClassDefFoundError ex) {
LOG.error("Unable to load class [{}]. Perhaps it exists but certain dependencies are not available?",
classInfo.getName(), ex);
return false;
}
{code}
*Reproduction*:
1. Use convention plugin with struts.convention.action.includeJars configured
2. Deploy application without JUnit dependency at runtime
3. Convention plugin attempts to scan org.apache.struts2.XWorkTestCase
4. Application fails with NoClassDefFoundError instead of logging and continuing
*Related classes*:
- PackageBasedActionConfigBuilder.java (line 664)
- DefaultClassFinder.java (correct pattern at line 283-286)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)