我有一个简单的Java程序,该程序将字符串发送到AWS SNS。当我通过调试器运行该应用程序时,该消息已正确发送,因此我认为我的AWS引用等都井井有条。
如果我使用Maven生成JAR来构建应用程序,则构建成功完成,但在尝试执行JAR时出现java.lang.NoClassDefFoundError:com / amazonaws / services / sns / AmazonSNSClientBuilder错误。
参考Java 1.8和Maven 3.6.0,以下通过mvn -v输出
Apache Maven 3.6.0(97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T05:41:47 + 11:00)Maven主页: /Users/skilic/dev/apache-maven-3.6.0 Java版本:1.8.0_202,供应商: Oracle Corporation,运行时: /图书馆/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre 默认语言环境:en_AU,平台编码:UTF-8操作系统名称:“ mac os x”, 版本:“ 10.14.4”,拱门:“ x86_64”,家族:“ mac”
这是pom.xml中的依赖项声明
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.327</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sns</artifactId>
<version>1.11.534</version>
</dependency>
当我执行java -jar target / uber-jar.jar时,我得到:
Administrators-MacBook-Pro:SNS skilic $ java -jar target / uber-jar.jar世界您好!线程“主”中的异常 java.lang.NoClassDefFoundError: com / amazonaws / services / sns / AmazonSNSClientBuilder 在mvnGroup.App.main(App.java:20)处,原因:java.lang.ClassNotFoundException: com.amazonaws.services.sns.AmazonSNSClientBuilder 在java.net.URLClassLoader.findClass(URLClassLoader.java:382) 在java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349) 在java.lang.ClassLoader.loadClass(ClassLoader.java:357) ...还有1个