Исключение возникает при вызове jar

#java #amazon-web-services #maven-jar-plugin

#java #amazon-веб-сервисы #maven-jar-плагин

Вопрос:

У меня есть класс, и я использую

 String signingAlgorithm = SigningAlgorithm.HmacSHA256.toString();
 

там. класс работает нормально, когда я запускаю unit test или main method . Но это дает такое исключение

Исключение в потоке «main» java.lang.NoClassDefFoundError: com/ amazonaws/auth/Алгоритм подписи

когда я звоню jar

 <dependency>
     <groupId>com.amazonaws</groupId>
     <artifactId>aws-java-sdk</artifactId>
     <version>1.7.2</version>
</dependency>
 

Я использую maven-jar-plugin

 <manifest>
     <addClasspath>true</addClasspath>
     <classpathPrefix>lib/</classpathPrefix>
     <mainClass>com.example.my.MainClass</mainClass>
</manifest>
 

есть идеи?

Комментарии:

1. Вам нужно иметь файл AWS jar (и, возможно, другие зависимости) где-нибудь, возможно lib/ , в текущем каталоге. Я рекомендую создать jar-with-dependencies, который объединяет их все для упрощения развертывания.

2. ya. У меня есть aws-java-sdk зависимости в maven. версия 1.7.2

3. это не приведет к автоматическому помещению их в файл jar. Но это может быть что-то другое. У вас есть полная трассировка стека?

4. да, похоже, что jar зависимостей отсутствует. Если в вашем манифесте указано lib/aws.jar , что вам необходимо иметь этот файл jar в дополнение к вашему собственному. Он не загрузит его волшебным образом из репозитория Maven.

5. @Thilo Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/SigningAlgorithm at com.example.my.SignatureUtil.getEncoded(SignatureUtil.java:85) at com.example.my.SignatureUtil.generateSignature(SignatureUtil.java:50) at com.example.my.MainClass.main(MainClass.java:13) Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.SigningAlgorithm at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190)