You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非Java项目调用含AWS SDK的Java类运行Karate测试遇阻求助

Karate测试调用含AWS SDK的自定义Java类问题

我的Karate测试不属于Java项目,此前通过以下命令针对外部部署的Java微服务(基于JVM参数serviceName指定)运行,一切正常:

java -Dkarate.env=qa -DserviceName=aca-retention -cp './karate.jar:.' com.intuit.karate.Main --tags @tier1 --threads 3 .

.feature文件位于当前工作目录及其子目录,类路径包含当前目录以加载用于日志脱敏的自定义Java类。

现在需要实现包含AWS SDK依赖的Java测试逻辑,但调用自定义类时遇到以下问题:

问题1:打包为独立Spring Boot项目后无法加载自定义类

在.feature文件中执行* def S3ObjectRetention = Java.type('com.nm.aca.test.S3ObjectRetention')时,报错如下:

12:54:59.939 tier2/aca-retention/fixed-retention.feature:39
* def S3ObjectRetention = Java.type('com.nm.aca.test.S3ObjectRetention')
js failed:
>>>>>>
01: Java.type('com.nm.aca.test.S3ObjectRetention')
<<<<<<
org.graalvm.polyglot.PolyglotException: TypeError: Access to host class com.nm.aca.test.S3ObjectRetention is not allowed or does not exist.
- <js>.:program(Unnamed:1)

tier2/aca-retention/fixed-retention.feature:39

问题2:单独编译类并添加AWS SDK到类路径后,调用方法时找不到依赖类

单独编译自定义类并在类路径中加入AWS SDK Jar包后,执行* def retainUntil = S3ObjectRetention.get(s3BucketName, s3ObjectKey)时,报错如下:

* def retainUntil = S3ObjectRetention.get(s3BucketName, s3ObjectKey)
js failed:
>>>>>>
01: S3ObjectRetention.get(s3BucketName, s3ObjectKey)
<<<<<<
org.graalvm.polyglot.PolyglotException: software/amazon/awssdk/services/s3/S3Client
- S3ObjectRetention.get(S3ObjectRetention.java:9)
- <js>.:program(Unnamed:1)

tier2/aca-retention/fixed-retention.feature:40

其中Java类第9行代码为:

S3Client s3Client = S3Client.builder()
                            .region(Region.US_EAST_1) // Specify your desired AWS region
                            .build();

请问我哪里操作有误?是否应该改用Maven运行Karate测试?


内容的提问来源于stack exchange,提问作者Jon Detert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:03:13