- 1. 【備忘録】Springスターター・プロジェクト(Spring Initializr)を使う時の注意点【Spring Boot, eclipse】
- 2. [Google Calendar API(V3)] Javaでカレンダーのユーザー設定情報を取得する
- 3. 【eclipse】Spring bootでバージョンが違うというエラーが出た(java.lang.UnsupportedClassVersionError)
- 4. 【Spring boot】メイン・クラスcom.example.demo.~を検出およびロードできませんでしたを解決する【eclipse】
- 5. メモ
- 6. [Google Calendar API(V3)] JavaでCalendar APIを使う
- 7. Javaで、ディレクトリの一覧を取得。拡張子はproperties。Listに結果を格納したい
- 8. JAVAをたまにしか書かないのでコードのメモを置く
- 9. Javaサーブレットの基本
- 10. staticメソッドから非staticメソッドを呼び出す
- 11. 拡張for文の使い方
- 12. Spring bootで@DateTimeFormatのバリデーションで発生する例外を調査
- 13. Doma2を使ってみる(その1)
- 14. MinetestGameサーバをdockerコンテナで構築する
- 15. IntelliJで空のプロジェクトを作成してからHelloWorldを実行するまで
- 16. ConstraintViolationExceptionからパラメタ名が取得できない
- 17. M1MacでJava8とPostgreSQL13の環境構築
- 18. #10【勉強メモ】エヴァンス本からざっくり理解するDDD
- 19. SpringBootでApachePOIを使ったxlsxファイルダウンロードの基礎
- 20. messageについて
【備忘録】Springスターター・プロジェクト(Spring Initializr)を使う時の注意点【Spring Boot, eclipse】
# Javaのバージョンが正しいか確認する!
![スクリーン ショット 2024-04-01 に 15.59.00 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735520/dcd82509-9117-0aa2-0e3f-35ae1b550de2.png)この確認をし忘れて違うバージョンを選択していると、JREシステムライブラリがアンバインド済みになってしまい、
:::note alert
エラー: メイン・クラスcom.example.demo.~を検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: com.example.demo.~
:::
:::note alert
型 java.lang.Class を解決できません。It is indirectly referenced from required type org.springframework.boot.autoconfigure.SpringBootApplica
[Google Calendar API(V3)] Javaでカレンダーのユーザー設定情報を取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーのユーザー設定情報を取得する方法
についてご紹介します。Googleカレンダーの右上にある歯車マークを押して表示される
メニューの「設定」から設定できる内容を取得できます。
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https:
【eclipse】Spring bootでバージョンが違うというエラーが出た(java.lang.UnsupportedClassVersionError)
JavaのSpring bootでWebアプリを開発していたら下のようなエラーが発生。
:::note alert
エラー: メイン・クラスcom.example.demo.~のロード中にLinkageErrorが発生しました
java.lang.UnsupportedClassVersionError: com/example/demo/~ has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0
:::## 【原因】build.gradleで指定しているバージョンがJavaのバージョンと異なる
1. Javaのバージョンを確認
Eclipseのメニューから[設定]を選択→[Java]-[インストール済みのJRE]を選択
チェックの付いているJavaのバージョンを確認。2. build.grad
【Spring boot】メイン・クラスcom.example.demo.~を検出およびロードできませんでしたを解決する【eclipse】
eclipseを使ってSpring bootでWebアプリを開発していたらコードは間違えていないのに下のようなエラーが出てしまった。
:::note alert
エラー: メイン・クラスcom.example.demo.~を検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: com.example.demo.~
:::
:::note alert
型 java.lang.Class を解決できません。It is indirectly referenced from required type org.springframework.boot.autoconfigure.SpringBootApplication
:::# 【原因】JREシステムライブラリがアンバインド済みもしくは追加されてない
1. プロジェクトを右クリック
1. プロパティを選択
1. Javaのビルド・パスを選択
1. ライブラリー選択
1. 変数の追加からJRE システムライブラリー追加、もしくはアンバインド済みのJREシステムライブラリの編集で使
メモ
~~~Java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;@Service
public class MessageService {@Value(“${greeting.morning}”)
private String morningMessage;@Value(“${greeting.afternoon}”)
private String afternoonMessage;@Value(“${greeting.evening}”)
private String eveningMessage;@Value(“${error.E101}”)
private String errorE101Message;@Value(“${error.E102}”)
private String errorE102Message;
[Google Calendar API(V3)] JavaでCalendar APIを使う
Googleが提供しているGoogle Calendar APIをJavaで使ってみました。
***Google Calendar APIとは***
Googleが提供しているAPIで、Googleカレンダーに関する操作ができます。Google Calendar APIの利用料金は無料です。
|No|||目次|
|—|—|—|—|
|1|||[Google Calendar APIを使用するための準備](#1-google-calendar-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Google Calendar APIの設定](#12-google-calendar-apiの設定)|
||3||[APIを使用するためのキー取得](#
Javaで、ディレクトリの一覧を取得。拡張子はproperties。Listに結果を格納したい
“`java
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;public class PropertiesFileList {
public static void main(String[] args) {
// クラスパスを基準としたディレクトリのパス
String directoryPath = “/directory”; // ディレクトリが直下にある場合// クラスローダーを使用してリソースを取得
ClassLoader classLoader = PropertiesFileList.class.getClassLoader();
URL resource = classLoader.getResource(directoryPath);if (resource != null) {
// try
JAVAをたまにしか書かないのでコードのメモを置く
# はじめに
1年ほどJAVAを書いておらず、基礎文法を忘れかけていたのでこの記事にメモ書きする。# JAVAメモ
“`java:テンプレ(main.javaだとする)
public class main{
public static void main(String[] args){
}
}
“`“`java:何かを入力・出力したい時
import java.util.Scanner;public class main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); //単変数の場合
int[] A = new int [n]; //配列の場合
for(int i=0;i
Javaサーブレットの基本
## サーブレットとは
サーブレットとは、JavaでWebアプリケーションを作成するための技術標準の1つです。サーブレットは、Webサーバー上で実行されるJavaプログラムで、クライアントからのリクエストを受け取り、必要な処理を行った後、レスポンスを返します。
サーブレットの主な特徴は以下の通りです。
– プラットフォームに依存しない
– マルチスレッド対応
– 軽量
– 拡張性が高い## サーブレットのライフサイクル
サーブレットには、以下のようなライフサイクルがあります。
1. **インスタンス化** – サーブレットのインスタンスが生成される。
2. **初期化** – `init()`メソッドが呼び出される。
3. **サービス** – `service()`メソッドが呼び出され、HTTP リクエストに応じた処理が行われる。
4. **破棄** – `destroy()`メソッドが呼び出され、サーブレットインスタンスが破棄される。“`mermaid
graph LR
A[インスタンス化] –> B[初期化]
B –> C[サービス]
C –> D[破棄
staticメソッドから非staticメソッドを呼び出す
staticメソッドから非staticメソッドを呼び出したい場合は直接呼び出すことができません。
インスタンスを生成し、そのインスタンスを通して呼び出す必要があります。この記事ではstaticメソッドの概要に加えて、staticメソッドから非staticメソッドを呼び出す方法について記載します。
目次
[1.staticメソッドとは](#1-staticメソッドとは)
[2.非staticメソッドからstaticメソッドを呼び出す](#2-非staticメソッドからstaticメソッドを呼び出す)
[3.staticメソッドから非staticメソッドを呼び出す](#3-staticメソッドから非staticメソッドを呼び出す)# 1. staticメソッドとは
staticメソッドは、戻り値の前にstaticを付けることで宣言できます。
staticメソッドで表現された変数はstatic変数またはクラス変数と呼ばれます。以下の例からは、staticMethodがstatic変数(クラス変数)であり、staticMethodと命名されたメソッドがstaticメソッドである
拡張for文の使い方
for文を書く際に拡張for文を使うことが多いので、for文と拡張for文の違いや、拡張for文の利便性をまとめます。
目次
[1.for文とは](#1-for文とは)
[2.拡張for文とは](#2-拡張for文とは)# 1. for文とは
まず、for文について説明します。
for文は以下の要素で成り立ちます。
・for文で使用する変数の宣言と初期化を行う初期化式
・繰り返し処理が実行される条件を記載する条件式
・ループ処理が終わるたびに実行される変化式
“`java
for (初期化式; 条件式; 変化式;) {
処理
}
“`
サンプルに当てはめてみます。
iは0から始まり、numに1が足される処理が10回実行されます。
“`java
int num = 0;for (int i = 0; i <10; i++;) { num += 1; } ``` # 2. 拡張for文とは 次に、拡張for文について説明します。 拡張for文は、配列やArrayListなどのコレクションの要素に対して順番に処理を行うことができます。 ()内には以下の要素を記
Spring bootで@DateTimeFormatのバリデーションで発生する例外を調査
## 環境
* Spring boot 3.2.4
* Amazon Corretto JDK 17## 調査したこと
* Controllerで日付のパラメタを受け取るときに、バリデーションをかけたい
* @DateTimeFormatと@JsonFormatは@Sizeなどの通常のバリデーションとスローされる例外が異なっていた
* @RequestParamと@RequestBodyの位置の違いでも動作が異なるため、それぞれ試してみる## 結果
|位置|バリデーション|スローされる例外|
|-|-|-|
|@PathVariable|@Size|ConstraintViolationException|
|@PathVariable|@DateTimeFormat|MethodArgumentTypeMismatchException|
|@RequestParam|@Size|ConstraintViolationException|
|@RequestParam|@DateTimeFormat|MethodArgumentTypeMismatchException
Doma2を使ってみる(その1)
# Doma2を使ってみる(その1)
## ライブラリ概要
Doma 2はJava 8+向けのデータベースアクセスフレームワークです。Domaにはさまざまな強みがあります。## 特徴
– SQLマッパー型
– 2-way SQL
– Kotlinサポート
– コンパイル時にアノテーションプロセッサーを使用して、ソースコードを検証および生成します。
– 型安全なCriteria APIを提供します。
– 他のライブラリに依存しません。### SQLマッパー型
データベースのテーブルとプログラムのクラスを直接対応付けることができます。
また、SQLは別途テキストファイルに書くことが多い
#### メリット
– 学習コストが低い
– SQLを知っていれば利用することができる
#### デメリット
– 誰でも扱える結果、共通化されないことが多い
#### 選定理由
– 開発者を選ばずとりあえず DB アクセスをして動くものを作りたい場合に採用される### 2-way SQL
SQL単体でも、プログラムからでも実行できる
“`sql
select * from t_pr
MinetestGameサーバをdockerコンテナで構築する
### 背景・目的
自作サーバ仮想化で、収支計算、開発環境を構築してきましたが、新たな機能を追加したいと思うようになりました。
また、妻がMinecraftに最近興味を示し始めたことで、ゲームが出来たらストレス解消になるのではと思いました。そこで、Minecraftのオープンソース版(?)であるminetest game(以降minetestと記載)の構築をしようと思います。
Minecraftはmicrosoftアカウントと製品購入が必須です。
これまでの活動として無料利用というコンセプトは崩したくないため、OSS版がないかを調べたところ、Github上にminetestというサンドボックスゲームが使えるということがわかりました。
Minetest専用クライアントをインストールし、サーバ上にMinetestをインストールすれば使えそうです。https://note.com/ueponx/n/n1897653f1056
今回、自分好みにカスタマイズできるminetest環境を構築することにしました。
ただし、セキュリティ脆弱性は十分考慮の上利用するよう注意が必要のため、脆弱
IntelliJで空のプロジェクトを作成してからHelloWorldを実行するまで
## 環境
– Windows 11
– IntelliJ 2023.3.6## 新規プロジェクトの作成
今回は「空のプロジェクト」を選んで作成します。
![image1-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759729/9f4880e6-c866-d8e8-0b27-02e8ff02567a.png)## srcディレクトリの作成
作成したプロジェクトの直下に`src`ディレクトリを作成します。
![image1-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759729/df608cbc-927b-0bf1-8cc8-41c64ea4bd5d.png)## プロジェクト設定の変更
IntelliJのメニューから「ファイル」→「プロジェクト構造」を選択してプロジェクト構造ウインドウを開きます。
![image1-0.png](https://qiita-image-store.s3.a
ConstraintViolationExceptionからパラメタ名が取得できない
## 要約
* Spring BootでAPIを開発しており、パスパラメタへバリデーションを設定した
* バリデーションを通過できなかったときにレスポンスボディへパラメタ名と理由を設定したい
* しかしパラメタ名の取得でつまづいたのでその記録を記載### Controllerの例
“`java:OrderController.java
@RestController
@Validated
@RequestMapping(“/api/”)
public class OrderController {@PostMapping(“/order/{pathOrderId}”)
public ResponseEntitypostOrder(
@PathVariable(name = “pathOrderId”) @Size(min = 1, max = 6) String pathOrderId,
@RequestBody @Validated OrderRequest request){
//
M1MacでJava8とPostgreSQL13の環境構築
# 1. JDKのインストール
JDK(Java Development Kit)は、環境構築するためのファイルがパッケージされている。
以下の公式サイトから「jdk-8u401-macosx-aarch64.dmg」をダウンロードhttps://www.oracle.com/java/technologies/downloads/#java8-mac
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/a0c1152b-f911-a4a4-1b5e-7f931e856a60.png)
ダウンロードの前にプロファイル作成が必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/7ab9a1c7-9387-13cd-5ebb-3b1a07d9a3bc.png)インストールを進める
![image.png](https://qiita-image-store.
#10【勉強メモ】エヴァンス本からざっくり理解するDDD
## 目標
・ふわっとした理解のDDDについて[エヴァンス本](https://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9/dp/4798121967/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%B
SpringBootでApachePOIを使ったxlsxファイルダウンロードの基礎
# この記事はこれの続きです
https://qiita.com/waokitsune/items/806b7f87e9a8348fb47a
# 概要
まず **ApachePOIを導入するところから** 始まります。
そして、 **最小限のコード** で **最低限のxlsxファイル** がダウンロードできるところまで作ります。# build.gradle
dependenciesに下記二つを追記。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/df4ba528-ed19-8978-68b0-bec16501ab4c.png)“`:コピペ用
implementation ‘org.apache.poi:poi:5.2.5’
implementation ‘org.apache.poi:poi-ooxml:5.2.5’
“`build.gradleを変更したら下記を忘れないように注意。
![image.png](https://qiita-image
messageについて
~~~java
@Configuration
public class AppConfig {@Autowired
private MessageSource messageSource;@Bean
public String getMessage() {
// プレースホルダーを置換する値の配列
Object[] args = {“John”, “Doe”};// ロケールを取得
Locale locale = LocaleContextHolder.getLocale();// MessageSourceResolvableを使用してメッセージを取得
MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(“hello.message”, args, “Default message”, locale);
String