java.lang.ClassNotFoundException:org.apache.commons.codec.binary.Base64

sel*_*rai 11 java servlets

在这里,我将三个参数传递给此sign方法.在这一行

signature = new String(Base64.encodeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));

我收到错误:

严重:servlet [com.asp.amz.amzServlet]的Servlet.service()在路径[/ amazon]的上下文中引发异常[Servlet执行抛出异常],原因是java.lang.ClassNotFoundException:org.apache.commons. codec.binary.Base64

String Key = "z/0qfiE+ScjxHy2gSwmHqP0rZ6fT9zhVgsNt";
String signatureMethod = "HmacSHA256";
String data = "sandbox.amazon.com/cobranded-ui/actions/start?callerKey=AKIAJZOKEUCXF7RKSCNA&callerReference=callerReferenceSingleUse&currencyCode=USD&paymentReason=HarryPotter%201-5%20DVD%20set&pipelineName=SingleUse&returnURL=http%3A%2F%2Flocalhost%3A8888%2Famazon&signatureMethod=HmacSHA256&signatureVersion=2&transactionAmount=5&version=2009-01-09";

    private static String sign(String data, String key, String signatureMethod) throws SignatureException
    {
        System.out.println(" In sign block ");
        String signature = "";
        try {
            System.out.println(" In sign Try block ");
            Mac mac = Mac.getInstance(signatureMethod);
            mac.init(new SecretKeySpec(key.getBytes(), signatureMethod));
            signature = new String(Base64.encodeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));
            System.out.println(" In sign Try block ");
        } catch (Exception e) {
            System.out.println(" In sign catch block ");
            throw new SignatureException("Failed to generate signature: " + e.getMessage(), e);         
        }
        System.out.println(" End sign block " + signature);
        return signature;
    }
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 35

只需将commons-codec.jar添加到您的类路径中

  • 不在构建路径上,您需要在运行时提供.将它添加到`WEB-INF/lib` (11认同)
  • @Jigar Joshi - 非常感谢WEB-INF/lib评论. (2认同)