testcontainers / testcontainers-scala

Docker containers for testing in scala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

localstack-v2 require aws sdk 1.x and 2.x

rpiotrow opened this issue · comments

If we define test-containers-localstack-v2-aws-only2.sc as:

using lib "software.amazon.awssdk:auth:2.17.250"
using lib "com.dimafeng::testcontainers-scala-localstack-v2:0.40.10"

import com.dimafeng.testcontainers.LocalStackV2Container

LocalStackV2Container()

then there is compile error:

$ scala-cli test-containers-localstack-v2-aws-only2.sc
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials
	at com.dimafeng.testcontainers.LocalStackV2Container.<init>(LocalStackV2Container.scala:14)
	at com.dimafeng.testcontainers.LocalStackV2Container$.apply(LocalStackV2Container.scala:8)
	at test$minuscontainers$minusscala$minusissue$.<clinit>(test-containers-scala-issue.sc:8)
	at test$minuscontainers$minusscala$minusissue_sc$.main(test-containers-scala-issue.sc:25)
	at test$minuscontainers$minusscala$minusissue_sc.main(test-containers-scala-issue.sc)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentials
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 5 more

When we add dependency to aws 1.x (making test-containers-localstack-v2-aws-1-and-2.sc):

using lib "software.amazon.awssdk:auth:2.17.250"
using lib "com.dimafeng::testcontainers-scala-localstack-v2:0.40.10"

using lib "com.amazonaws:aws-java-sdk-core:1.12.93"

import com.dimafeng.testcontainers.LocalStackV2Container

LocalStackV2Container()

it will compile:

$ scala-cli test-containers-localstack-v2-aws-1-and-2.sc
Compiling project (Scala 3.1.3, JVM)
Compiled project (Scala 3.1.3, JVM)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

It is not very intuitive that testcontainers-scala-localstack-v2 requires both AWS sdk major versions to work and I didn't find any information about that.