0

我正在尝试按照说明将 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. 浏览到 web.xml 中定义的 url-patterns 给出的位置之一,例如http://localhost:8080/stickyImg如果一切设置正确,您应该会看到/听到验证码挑战。

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

4

1 回答 1

0

据我了解,有几个问题。

  1. Intellij Idea 将我的 jar 视为目录,而不是库。我删除了简单的验证码目录并再次复制过去的 jar 并更改了图标: 在此处输入图像描述
  2. 在阅读了 WEB-INF/lib 中不可见的 Maven 依赖项之后,我考虑将 jar 作为库添加到项目中。我去了项目结构(Ctrl + Alt + Shift + S)并添加了简单的验证码作为库:

在此处输入图像描述

现在问题已经解决了。

于 2017-12-17T08:15:31.953 回答