У меня есть исключение компиляции при компиляции кода для создания предварительно подписанного URL-адреса для загрузки на S3 со стороны клиента Angular5.
Код работает очень хорошо, когда я использую aws-java-sdk. Но поскольку библиотека большая, и мы просто хотим использовать S3 из aws-java-sdk Я меняю зависимость на использование aws-java-sdk-s3. и после этого изменения код генерирует ошибку компиляции.
Pom.xml
<!-- <dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.310</version>
</dependency>-->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.311</version>
</dependency>
Код Java:
AWSCredentials credentials = new BasicAWSCredentials(
ACCESS_KEY,
SECRET_KEY
);
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new StaticCredentialsProvider(credentials))
.withRegion(Regions.US_EAST_1)
.build();
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
// URL will be valid for 5 minutes only.
milliSeconds += 1000 * 60 * 10; // Add 10 Mins.
expiration.setTime(milliSeconds);
GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(BUCKET, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
generatePresignedUrlRequest.setExpiration(expiration);
URL url = s3client.generatePresignedUrl(generatePresignedUrlRequest);
return url.toString();
Compilation failure [ERROR] S3CredentialService.java:[49,51] error: cannot access SdkClientException
Дерево зависимостей.
[INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.11.311:compile
[INFO] | +- com.amazonaws:aws-java-sdk-kms:jar:1.11.18:compile
[INFO] | +- com.amazonaws:aws-java-sdk-core:jar:1.11.18:compile
[INFO] | | +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] | | \- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.8.4:compile
[INFO] | \- com.amazonaws:jmespath-java:jar:1.11.311:compile
Также: если вы запустите mvn dependency:tree, указывает ли aws-java-sdk-s3 на aws-java-sdk-core как на транзитивную зависимость? Если нет, то что еще делать?
Это строка 49: URL url = s3client.generatePresignedUrl (generatePresignedUrlRequest);
@kdgregory Я отредактировал вопрос, чтобы добавить дерево зависимостей.
Хорошо, и это довольно ясно показывает, что версия aws-java-sdk-core - это 1.11.18, а не 1.11.311. Итак, следующий вопрос, на который вы должны ответить, - это почему это происходит?. Скорее всего, где-то есть раздел dependencyManagement, или, возможно, вы импортируете «спецификацию материалов» (bom), которая определяет эту версию.




Что такое строка 49?