You are basically mixing Struts 1 with Struts 2. Looks like jCaptcha plugin needs Struts 1, that's why it requires:
ERROR finder.ClassFinder Unable to read class [com.octo.captcha.module.struts.image.RenderImageCaptchaAction] Could not load org/apache/struts/action/Action.class and ERROR finder.ClassFinder Error loading class [com.octo.captcha.module.struts.CaptchaServicePlugin] java.lang.NoClassDefFoundError: org/apache/struts/action/PlugIn 2015-02-07 7:08 GMT+01:00 Alireza Fattahi <afatt...@yahoo.com.invalid>: > The project uses jCaptcha 1.0, after upgrading from 2.3.16 to Struts 2.3.20 > the application could not start. > Our project is not using jCaptcha struts integration, so we do not have and > jCaptcha configuration ins strust.xml or web.xml, for instance we do **NOT** > have below line in struts.xml > > <plug-in className="com.octo.captcha.module.struts.CaptchaServicePlugin"/> > > I think some plugin management mechanism is changed so the struts 2.3.20 try > to find and start this plugin while 2.3.16 didn't. > > The error is as below: > > ERROR finder.ClassFinder Unable to read class > [com.octo.captcha.module.struts.image.RenderImageCaptchaAction] > Could not load org/apache/struts/action/Action.class - [unknown location] > at > com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:723) > at > com.opensymphony.xwork2.util.finder.ClassFinder.access$400(ClassFinder.java:71) > at > com.opensymphony.xwork2.util.finder.ClassFinder$InfoBuildingClassVisitor.extractSuperInterfaces(ClassFinder.java:770) > at > com.opensymphony.xwork2.util.finder.ClassFinder$InfoBuildingClassVisitor.visit(ClassFinder.java:757) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at > com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:718) > at > com.opensymphony.xwork2.util.finder.ClassFinder.<init>(ClassFinder.java:113) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > at > org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) > at > com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274) > ERROR finder.ClassFinder Unable to read class > [com.octo.captcha.module.struts.VerifyCaptchaChallengeAction] > Could not load org/apache/struts/action/Action.class - [unknown location] > at > com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:723) > at > com.opensymphony.xwork2.util.finder.ClassFinder.access$400(ClassFinder.java:71) > at > com.opensymphony.xwork2.util.finder.ClassFinder$InfoBuildingClassVisitor.extractSuperInterfaces(ClassFinder.java:770) > at > com.opensymphony.xwork2.util.finder.ClassFinder$InfoBuildingClassVisitor.visit(ClassFinder.java:757) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at > com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:718) > at > com.opensymphony.xwork2.util.finder.ClassFinder.<init>(ClassFinder.java:113) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > ERROR finder.ClassFinder Error loading class > [com.octo.captcha.module.struts.CaptchaServicePlugin] > java.lang.NoClassDefFoundError: org/apache/struts/action/PlugIn > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > at > com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate.loadClass(ClassLoaderInterfaceDelegate.java:34) > at > com.opensymphony.xwork2.util.finder.ClassFinder$ClassInfo.get(ClassFinder.java:563) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder$3.test(PackageBasedActionConfigBuilder.java:613) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder$3.test(PackageBasedActionConfigBuilder.java:600) > at > com.opensymphony.xwork2.util.finder.ClassFinder.findClasses(ClassFinder.java:343) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:393) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > at > org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) > at > com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274) > at > com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) > at > org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967) > at > org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:435) > at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:479) > at > org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) > at > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) > Caused by: java.lang.ClassNotFoundException: > org.apache.struts.action.PlugIn > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > ... 35 more > ERROR finder.ClassFinder Error loading class > [com.octo.captcha.module.struts.image.RenderImageCaptchaAction] > java.lang.NoClassDefFoundError: org/apache/struts/action/Action > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > at > com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate.loadClass(ClassLoaderInterfaceDelegate.java:34) > at > com.opensymphony.xwork2.util.finder.ClassFinder$ClassInfo.get(ClassFinder.java:563) > at > com.opensymphony.xwork2.util.finder.ClassFinder.findClasses(ClassFinder.java:344) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:393) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > Caused by: java.lang.ClassNotFoundException: > org.apache.struts.action.Action > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > ... 33 more > ERROR finder.ClassFinder Error loading class > [com.octo.captcha.module.struts.VerifyCaptchaChallengeAction] > java.lang.NoClassDefFoundError: org/apache/struts/action/Action > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > at > com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate.loadClass(ClassLoaderInterfaceDelegate.java:34) > at > com.opensymphony.xwork2.util.finder.ClassFinder$ClassInfo.get(ClassFinder.java:563) > at > com.opensymphony.xwork2.util.finder.ClassFinder.findClasses(ClassFinder.java:344) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:393) > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > at > org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) > at > com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274) > at > com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) > at > org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967) > Caused by: java.lang.ClassNotFoundException: > org.apache.struts.action.Action > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > ... 33 more > ERROR finder.ClassFinder Error loading class > [com.octo.captcha.module.struts.VerifyCaptchaChallengeMethodAction] > java.lang.NoClassDefFoundError: org/apache/struts/action/Action > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) > Caused by: java.lang.ClassNotFoundException: > org.apache.struts.action.Action > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) > ... 40 more > > ~Regards, > ~~Alireza Fattahi --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org