我是java / maven新手,我遇到了这个奇怪的问题,希望有人可以在上面遮住一些灯光。 我有两个Maven项目。项目A是类B的依赖项。项目A在其pom.xml中将aws java sdk声明为其依赖项:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.549</version>
</dependency>
现在,项目B将项目A声明为其依赖项,并且还声明aws-java-sdk-s3
,其版本与项目A中的aws-java-sdk
完全相同:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.549</version>
</dependency>
但是,在我的Intellij Dependency Analyzer中,我可以看到项目B正在使用s3 sdk 1.11.43
和1.11.549
的两个版本。但是项目A使用的是正确的版本1.11.549
。
如果我在docker容器中运行项目B,则会引发以下错误:
... 41 more Caused by: java.lang.ClassNotFoundException:
com.amazonaws.SdkClientException at
java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedUR
LClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 53 more
但是,当我从项目B的依赖项中删除s3 sdk时,应用程序成功启动!
有人可以向我解释一下还是给我一些有关如何调试它的提示?