ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラー内容
Fatal error compiling: 1.X は無効なターゲット・リリースです
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project myapp:
Fatal error compiling: 無効なターゲット・リリース: 11 -> [Help 1]
# 英語環境では
[ERROR] Failed to execute goal ...:
Fatal error compiling: invalid target release: 11
1.X の部分には 1.8 / 11 / 17 など、pom.xml で指定した Java バージョンが入ります。
原因
Maven は実行されている JDK のバージョンと、pom.xml が要求しているバージョンを照合します。両者の不一致でこのエラーが出ます:
pom.xml: Java 17 を要求- 実行 JDK: Java 11
- → Java 11 では Java 17 を target にできない → エラー
その逆(Java 17 で Java 8 を target)は OK ですが、新しい Java 機能が使えなくなります。
対処1: 実行 JDK を確認
# Maven が使っている JDK を確認
mvn -version
# 出力例
# Apache Maven 3.9.5
# Maven home: /usr/share/maven
# Java version: 11.0.20, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm/temurin-11-jdk-amd64
# Default locale: ja_JP, platform encoding: UTF-8
# OS name: "linux", version: "5.15.0", arch: "amd64"
# 環境変数
echo $JAVA_HOME
which java
java -version
# Windows
echo %JAVA_HOME%
where java
java -version
対処2: JAVA_HOME を切り替え
# Linux / Mac
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
mvn -version # 確認
# 永続化(.bashrc / .zshrc)
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
# Windows (PowerShell)
$env:JAVA_HOME = "C:\Program Files\Java\jdk-17"
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
mvn -version
# Windows 永続化: 環境変数の編集 (システムプロパティ → 環境変数)
対処3: pom.xml の指定方法を修正
古いやり方:
1.8
1.8
正しい書き方:
11
11
17
org.apache.maven.plugins
maven-compiler-plugin
3.11.0
17
17
17
Java バージョン記法の歴史
| Java | 記法(古い) | 記法(新しい) | release 推奨 |
|---|---|---|---|
| Java 5 | 1.5 | 5 | × |
| Java 6 | 1.6 | 6 | × |
| Java 7 | 1.7 | 7 | × |
| Java 8 | 1.8 | 8 | × |
| Java 9 | (NG) | 9 | ○ |
| Java 11 (LTS) | (NG) | 11 | ○ |
| Java 17 (LTS) | (NG) | 17 | ○ |
| Java 21 (LTS) | (NG) | 21 | ○ |
release vs source + target の違い
| source + target | release | |
|---|---|---|
| 使えるバージョン | Java 5+ | Java 9+ |
| 言語仕様 | source で指定 | release で指定 |
| バイトコード | target で指定 | release で指定 |
| 標準 API の制限 | 制限なし(新しい API も使える可能性) | ★ 指定バージョンの API のみ使える(厳密) |
| クロスコンパイル | 不完全 | 確実 |
release の方が厳密。例えば「Java 8 互換」を --release 8 で指定すると、Java 11 でJava 8 にない API(Stream.toList() 等)はコンパイルエラーになる。これが正しい挙動。
対処4: Maven Toolchains で複数 JDK 管理
1 つのマシンで複数 Java バージョンを使い分けるならツールチェーン:
jdk
1.8
oracle
/usr/lib/jvm/jdk1.8.0_311
jdk
17
/usr/lib/jvm/jdk-17
org.apache.maven.plugins
maven-toolchains-plugin
17
toolchain
対処5: sdkman / jenv で JDK 切替
# sdkman で複数 JDK 管理
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.10-tem # Java 17 (Temurin)
sdk install java 11.0.22-tem # Java 11
sdk install java 8.0.402-tem # Java 8
# 切替
sdk use java 17.0.10-tem
sdk default java 11.0.22-tem # デフォルトに
# プロジェクトディレクトリで自動切替
echo 'java=17.0.10-tem' > .sdkmanrc
sdk env install
# jenv (Mac で人気)
brew install jenv
jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
jenv global 17.0
CI/CD での JDK 指定
# GitHub Actions
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- run: mvn -B clean package
関連エラー
- UnsupportedClassVersionError: 実行時の JDK が古くてビルド済みクラスを読めない
- has been compiled by a more recent version of the Java Runtime: 同上
- Class file is Java X but supports Java Y: bytecode バージョン違い
- illegal reflective access: Java 9+ のモジュール制約
確認用コマンド
# 効いているプロパティ
mvn help:effective-pom | grep -A 3 "maven.compiler"
# プラグインに渡されている設定
mvn -X compile 2>&1 | grep -i "source\|target\|release"
# Java バージョン強制
mvn -Dmaven.compiler.source=17 -Dmaven.compiler.target=17 compile
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format
- Fatal error compiling: 1.Xは無効なターゲット・リリースです
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?