
OpenJDK 64-Bit Server VMの警告
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
「エラーかな?」と驚いたかもしれません。これは**警告(Warning)**です。動作には影響しませんが、赤い文字が気になる方のために、この番外編を用意しました。
対処手順だけを読みたい場合は、
こちらから移動できます。
この警告を理解するには、Java仮想マシン(JVM)の**CDS(Class Data Sharing)**という機能を知る必要があります。
Javaプログラムの起動時に大量のクラスを読み込むには時間がかかります。
そこでJVMは、よく使うクラスの情報を事前に処理し、*共有アーカイブ(Shared Archive)*に保存します。
次回の起動ではこのアーカイブを使えるため、処理が速くなります。
テスト
を実行するときは少し事情が異なります。
Mockitoやカバレッジ測定ツールのJaCoCoなどが、テストを補助するために実行過程に関わります。その際、Javaの基本の読み込み経路(Bootstrap Classpath)に項目が追加されます。
JVMから見ると、次のような状況です。
「作っておいた要約ノート(CDS)と、今の実行環境が違うぞ。
誰かが内容を追加した(Appended)ようだ。
この要約ノートは使えないから、自分でもう一度読み込もう。」
そのため「共有機能(Sharing)に対応できない」という警告が出ます。
つまり、**「最適化機能が無効になりました」**というお知らせです。
この警告はそのままでも問題ありません。
赤字が気になる場合は、JVMで共有機能(CDS)を無効にします。
最初から試行しなくなるため、警告も表示されなくなります。
1. IntelliJ IDEAの設定(一時的な対処) 🔗
IntelliJからの実行にだけ適用する場合は、次のように設定します。
- 上部メニューの
Run > Edit Configurations...(構成を編集)
をクリックします。
- 左の一覧からテスト構成(JUnit)を選びます。
VM options
欄に -Xshare:off を入力します。
欄が表示されなければ、Modify options を押し、Add VM options を有効にします。

IntelliJの設定
2. build.gradleの設定(恒久的な対処) 🔗
プロジェクト全体に適用し、チームメンバーにも警告が表示されないようにするには、Gradleの設定を変更します。
build.gradle の
test タスクに次の設定を追加します。
build.gradletasks.named('test') {
useJUnitPlatform()
// [추가] JVM에게 CDS 기능을 끄라고 지시합니다.
jvmArgs '-Xshare:off'
}
右上の象のアイコン(Gradle Refresh)を押し、テストを再実行してください。
設定を適用してテストを再実行します。

警告メッセージが消えたことを確認
OpenJDK 64-Bit Server VM warning が表示されなくなり、テスト結果だけが出ることを確認できます。
今回は、テスト環境でよく出るJVMの警告を扱いました。
原因
テストツールが実行環境を変更し、JVMの最適化機能(CDS)が無効になったことを知らせています。
対処
-Xshare:off を追加し、CDSを明示的に無効にすると、警告は表示されなくなります。
お読みいただき、ありがとうございました。