java.lang.ClassNotFoundException: nl.captcha.servlet.StickyCaptchaServlet

java.lang.ClassNotFoundException: nl.captcha.servlet.StickyCaptchaServlet

我正在尝试按照 the instruction.

将 SimpleCaptcha 库添加到我的项目中

我将 SimpleCaptcha jar 文件放在我的 /WEB-INF/lib 目录下:

我的web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
    <servlet-name>StickyCaptcha</servlet-name>
    <servlet-class>
        nl.captcha.servlet.StickyCaptchaServlet  <!-- Can't resolve -->
    </servlet-class>

    <init-param>
        <param-name>width</param-name>
        <param-value>250</param-value>
    </init-param>

    <init-param>
        <param-name>height</param-name>
        <param-value>75</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>StickyCaptcha</servlet-name>
    <url-pattern>/stickyImg</url-pattern>
</servlet-mapping>

当我尝试加载 http://localhost:8080/stickyImg 时出现以下异常:

java.lang.ClassNotFoundException: nl.captcha.servlet.StickyCaptchaServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

但是指令说:

  1. Browse to one of the locations given by the url-patterns defined in web.xml, e.g., http://localhost:8080/stickyImg. If everything has been set up correctly you should see/hear a CAPTCHA challenge.

我用谷歌搜索了这个问题,但找不到任何信息。

据我所知,有几个问题。

  1. Intellij Idea 将我的 jar 视为目录,而不是库。我删除了简单的验证码目录并再次复制过去的 jar 并且图标发生了变化:
  2. 进一步阅读 Maven dependencies not visible in WEB-INF/lib 之后,我考虑将 jar 作为库添加到项目中。我去了项目结构(Ctrl + Alt + Shift + S)并添加了简单的验证码作为库:

问题已解决