LoginSignup
4
2

More than 3 years have passed since last update.

AWS SDK for Javaで "JAXB is unavailable" と言われたら

Last updated at Posted at 2021-03-14

環境

  • AWS SDK for Java S3 1.11.327
  • Zulu 11.0.9.1
  • M1版 macOS Big Sur 11.2.3

現象

AmazonS3#putObject() でS3にファイルをアップロードすると、 JAXB is unavailable. Will fallback to SDK implementation which may be less performant という警告ログが出ます。

原因

JDK 11にはJAXB実装が含まれないからです。JDK 8とかだと、この現象は起こらないはずです。

解決方法

JAXBを明示的に追加すればOKです。

pom.xml
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-bom</artifactId>
                <version>1.11.327</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
        </dependency>
        <!-- この2つ! -->
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>2.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.3</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

注意点

jakarta.xml.bind-apiやjaxb-implのバージョンは必ず 2.3.3 にしてください。最新の 3.0.0 だと問題は解決しません。

おそらくAWS SDK側が jakarta.* ネームスペースに対応していないからだと思われます。

参考URL

Issue立てました

「いいね」などよろしくお願いします。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2