#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)