ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
1. ファイル単位の構造
Java のソースは .java ファイル単位で管理されます。1 ファイルの中身は必ず次の順序です。
// 1. package 宣言 (省略可、ただし実務では必ず書く)
package com.example.demo;
// 2. import 宣言
import java.util.List;
import java.util.ArrayList;
import static java.lang.Math.PI; // static import
// 3. 型宣言 (class / interface / enum / record)
public class Hello {
// フィールド
private static final String GREETING = "Hello, World!";
// メソッド
public static void main(String[] args) {
System.out.println(GREETING);
}
}
2. ファイル名と public class 名のルール
public な型は 1 ファイルに 1 つだけ、かつファイル名と完全一致させる必要があります。
// Hello.java
public class Hello { } // ✅ ファイル名と一致
// Hello.java
public class GoodBye { } // ❌ コンパイルエラー
// class GoodBye is public, should be declared
// in a file named GoodBye.java
// 同じファイルに非 public クラスは複数置ける
public class Hello { }
class HelloHelper { } // OK (package-private)
class HelloUtil { } // OK
3. パッケージとディレクトリ
package com.example.demo はディレクトリ階層 com/example/demo/ と一致させます。これは慣習ではなく仕様です。
src/main/java/
└── com/
└── example/
└── demo/
├── Hello.java # package com.example.demo;
├── GoodBye.java
└── util/
└── DateUtil.java # package com.example.demo.util;
4. main メソッド: 実行エントリ
public static void main(String[] args) {
// public : JVM から呼べる必要がある
// static : インスタンス化前に呼ぶので static
// void : 戻り値なし
// String[]: コマンドライン引数
System.out.println("args.length = " + args.length);
for (String a : args) System.out.println(a);
}
// Java 21+ では簡略版 (preview) も登場
// void main() {
// System.out.println("simpler");
// }
5. コンパイル → 実行
# 単一ファイル
javac Hello.java # → Hello.class が生成される
java Hello # 実行 (拡張子なし)
# パッケージ付き
javac -d build src/main/java/com/example/demo/Hello.java
java -cp build com.example.demo.Hello
# Java 11+ は javac 不要で直接実行できる (シングルファイル)
java Hello.java
# 引数を渡す
java Hello arg1 arg2
6. classpath とは
JVM が .class ファイルや .jar を探しに行くパスのこと。複数指定はコロン (Unix) / セミコロン (Windows) 区切り。
# Unix
java -cp build:lib/commons-lang3.jar:lib/guava.jar com.example.demo.Hello
# Windows
java -cp build;lib\commons-lang3.jar;lib\guava.jar com.example.demo.Hello
# 環境変数でも指定可能 (実務では推奨しない)
export CLASSPATH=build:lib/*
java com.example.demo.Hello
7. 配布単位: JAR / WAR / EAR
| 形式 | 中身 | 用途 |
|---|---|---|
.jar | クラス + リソース (ZIP) | ライブラリ / 単体アプリ |
.war | Web App (WEB-INF/web.xml 等) | Tomcat 等にデプロイ |
.ear | JAR + WAR + アプリディスクリプタ | Java EE アプリサーバ用 (現代では稀) |
# 自作 JAR
jar cf hello.jar -C build .
jar cfe hello.jar com.example.demo.Hello -C build . # Main-Class 指定
java -jar hello.jar
# 中身を見る
jar tf hello.jar
8. module-info.java (Java 9+)
JPMS (Java Platform Module System)。アプリやライブラリをモジュールとして宣言できます。
// src/main/java/module-info.java
module com.example.demo {
requires java.sql; // 依存モジュール
requires transitive java.logging; // 推移的に再エクスポート
exports com.example.demo.api; // 公開パッケージ
opens com.example.demo.internal // リフレクション開放
to spring.core;
provides com.example.spi.Driver
with com.example.demo.MyDriver;
}
9. ビルドツールのディレクトリ規約
Maven / Gradle の標準ディレクトリレイアウト。手動より楽なので新規プロジェクトはツール前提。
my-app/
├── pom.xml or build.gradle(.kts)
├── src/
│ ├── main/
│ │ ├── java/ # 本体コード
│ │ │ └── com/example/demo/Hello.java
│ │ └── resources/ # 設定 (application.yml 等)
│ └── test/
│ ├── java/ # テストコード
│ │ └── com/example/demo/HelloTest.java
│ └── resources/
└── target/ or build/ # 出力先
Maven の例
<!-- pom.xml -->
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>
</project>
10. Hello World を一行ずつ読み解く
package com.example.demo; // ← 名前空間
//
public class Hello { // ← 公開クラス (ファイル名と一致)
//
public static void main( // ← JVM が呼ぶ標準エントリ
String[] args) { // args はコマンドライン引数
//
System.out.println( // ← java.lang.System の標準出力
"Hello, World!"); // String リテラル
}
}
FAQ
Q: 1 ファイルに複数の public class を置けない理由は?
A: コンパイラがファイル名から型を引けるようにするためです。非 public なら 1 ファイルに複数置けます。
Q: package を書かないとどうなる?
A: 「無名パッケージ (default package)」になります。学習用には OK ですが、他パッケージから import できないので実務では必ず書きます。
Q: module-info.java は必須?
A: 必須ではありません。書かない場合は「unnamed module」として動きます。ライブラリ配布なら書いた方が良いです。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?