这里我将三个参数传递给此sign方法。 在这一行
signature = new String(Base64.encodeBase64(mac.doFinal(data.getBytes(UTF_8_Encoding))));
我收到错误:
SEVERE:Servlet的Servlet.service() [com.asp.amz.amzServlet]在上下文中 与路径[/ 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¤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;
}
答案 0 :(得分:35)
只需将commons-codec.jar添加到您的类路径
中答案 1 :(得分:0)
commons-codec.jar
答案 2 :(得分:0)
可能有两个原因:
第一个原因: 1. jar本身未添加到pom.xml中。在这种情况下,将依赖项版本添加到pom.xml中,该版本具有您要获取错误的类
第二个原因: 当在项目中添加了多个jar时,靠近项目的jar版本没有该类。您可以使用以下命令在项目中检查最近的罐子
mvn dependency:tree -Dverbose -Dincludes=jar-name-casuing-conflict
一旦您确定具有该类的Jar版本。您可以通过直接在项目pom.xml中添加该jar来解决
或者您可以排除更接近您的项目的jar,该jar没有该类,并且可以指向项目中的另一个jar。
示例:它将在项目“ org.cassandraunit”中排除该jar,然后将在您的项目中使用紧邻该项目的下一个jar。
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit</artifactId>
<version>3.1.3.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 3 :(得分:-1)