抛出java.lang.ClassNotFoundException:org.apache.commons codec.binary.Base64 [英] java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
问题描述
在这里,我传递三个参数到这个标志方法。
在此行
签名=新的String(Base64.en codeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));
块引用>我收到错误:
重度:对servlet的Servlet.service()
[com.asp.amz.amzServlet]在上下文中
与路径[/亚马逊]抛出异常
[Servlet的执行引发了异常]
与根源
抛出java.lang.ClassNotFoundException:
org.apache.commons。codec.binary.Base64
块引用>字符串键= Z / 0qfiE + ScjxHy2gSwmHqP0rZ6fT9zhVgsNt;
字符串是SignatureMethod = HmacSHA256;
字符串数据= sandbox.amazon.com/cobranded-ui/actions/start?callerKey=AKIAJZOKEUCXF7RKSCNA&callerReference=callerReferenceSingleUse¤cy$c$c=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 私有静态字符串号(字符串数据,字符串键,字符串是SignatureMethod)抛出SignatureException
{
的System.out.println(注册模块);
字符串特征码=;
尝试{
的System.out.println(注册try块);
苹果MAC = Mac.getInstance(是SignatureMethod);
mac.init(新SecretKeySpec(key.getBytes(),是SignatureMethod));
签名=新的String(Base64.en codeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));
的System.out.println(注册try块);
}赶上(例外五){
的System.out.println(注册catch块);
抛出新的SignatureException(无法生成签名:+ e.getMessage(),E);
}
的System.out.println(结束的标志块+签字);
返回签名;
}
解决方案只是添加的 commons- codec.jar 到你的classpath
Here I'm passing three parameters to this sign method. In this line
signature = new String(Base64.encodeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));
I'm getting error:
SEVERE: Servlet.service() for servlet [com.asp.amz.amzServlet] in context with path [/amazon] threw exception [Servlet execution threw an exception] with root cause 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¤cyCode=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; }
解决方案just add commons-codec.jar into your classpath
这篇关于抛出java.lang.ClassNotFoundException:org.apache.commons codec.binary.Base64的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!