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

Здесь я передаю три параметра методу знака. В этой строке

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

Я получаю сообщение об ошибке:

SEVERE: Servlet.service () для сервлета [com.asp.amz.amzServlet] в контексте с путем [/ amazon] выбросило исключение [Выполнение сервлета вызвало исключение] с первопричиной 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;
    }
11
задан f_puras 15 October 2019 в 19:25
поделиться

1 ответ

могло быть Две Причины этого:

Первая Причина: 1. Сама банка не добавляется в pom.xml. В этом случае добавьте версию зависимости в pom.xml, который имеет класс, для которого Вы получаете ошибку

Вторая Причина: то, Когда существует несколько банок, добавленных в проекте и версии банки, которая является близко к проекту, не имеет того класса. Можно проверить ближайшую банку в проект ниже команды

mvn dependency:tree -Dverbose -Dincludes=jar-name-casuing-conflict

enter image description here

, Как только Вы определяете версию Банки, которая имеет тот класс. Можно решить путем добавления, что банка непосредственно в pom.xml проекта

или можно исключить банку, которая ближе к проекту, который не делает имеет тот класс и может указать на другую банку в проекте.

Пример: это исключит банку в проекте "org.cassandraunit" тогда, это будет видеть непосредственную следующую банку, которая это близко к проекту, будет использоваться в Вашем проекте

   <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>
0
ответ дан 3 December 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: