JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Spring BootでTomcatデフォルトのエラーページをカスタマイズする

# 環境
– JDK 21
– Spring Boot 3.2.4
– Embedded Tomcat 10.1.19

# やりたいこと
Spring Bootにもエラーページの機能があります。具体的にはsrc/main/resources/templates直下にerror.htmlを作成すればOKです([公式ドキュメント](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.actuator.customize-whitelabel-error-page))。

しかし、サーブレットフィルターのレベルで例外がスローされると、前述のエラーページではなくTomcatデフォルトのエラーページが表示されてしまいます。

![スクリーンショット 2024-04-11 16.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58650/d9cbceb5-339a-fa33-e4d0-5be5cceea0

元記事を表示

[Google Tasks API(V1)] Javaでタスクリストを作成・更新・削除する

Google Tasks API V1(Java)を使用して、
タスクリストを作成・更新・削除する方法
についてご紹介します。

タスクリストはタイトルのみ更新できます。

Googleカレンダーからのタスク参照では、
画面左下にあるリストの情報が取得できます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクリストを作成](#1-タスクリストを作成)|
||1|[スコープ](#11-スコープ)|
||

元記事を表示

[Google Tasks API(V1)] Javaでタスクを取得する

Google Tasks API V1(Java)を使用して、
タスクを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスク一覧を取得](#1-タスク一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[タスクリストを取得](#2-タスクリストを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. タスク一覧を取得
指定したタスクリスト内のタスク一覧を取得します。

### 1.1. スコープ
このAPIを実行

元記事を表示

Minecraft Fabric APIの備忘録

Mod作成を始めたばかりなので
まだまだ知識は得ていない

記事を書いた理由は “クリエイティブタブのグループ作成” で物凄く沼ったから。

今後いろいろと作るうえで覚えたことを追記する予定

## 開発環境
– minecraft – 1.20.4
– fabric – 0.96.11+1.20.4
– VSCode
– Java (Kotlinは理解不足なので使わない)

バージョン等は今後変わる可能性あり

## プロジェクトの作成

– [テンプレートの作成](https://fabricmc.net/develop/template/ “fabricmc template”)
– grableの読み込みが終わった後コンソールで
`gradlew vscode` の実行

gitからzipでダウンロードする方だとクラス名やディレクトリ構成の変更が面倒だったので、上記テンプレートからダウンロードする方が楽

## アイテムの追加
“`java:ModName.java
public static final Item CUSTOM_ITEM = Registry.

元記事を表示

【Kotlin】OpenAPI Generatorでjavax.annotation.Generatedを生成しない or jakarta.annotation.Generatedに置換【Java】

この記事は同僚の発見した知見を代理でまとめたものです。

https://qiita.com/organizations/justincase

# 文脈
`OpenAPI Generator`で生成されるファイルに含まれる`javax.annotation.Generated`アノテーションのせいで`Java 17`移行時にコンパイルエラーが発生しました。
この問題は最新バージョンでは恐らく解決されていますが、自分たちのチームでは独自パッチを当てたバージョンを運用している関係で、バージョンアップでの解決はできませんでした。

そこで、なんとかバージョンを変えないままで、`javax.annotation.Generated`を生成しない、または`jakarta.annotation.Generated`に置換することを試みました。

自分たちのチームでは`spring-kotlin`のジェネレータを使っていますが、やり方的に言語を問わず応用可能と思われます。
また、後述するテンプレートのファイル名が同じだったので、`Java`に対してはそのまま適用可能だと思っています(確認はして

元記事を表示

【Apache JMeter】ファイルをBase64エンコードしてリクエストに含める方法

Apach JMeterによる負荷テストでファイルアップロード機能のテストを実施することになった。

実装したファイルアップロード機能はアップロードするファイルをBase64エンコードをしてJSON形式のリクエストに含めて送信する仕組みだったため、JMeter内でもBase64エンコードしたアップロードファイルを指定する必要がある。

当初、先にエンコードした結果をHTTPリクエストのBody Dataに直接貼り付けておこうと思ったが、貼り付けたり、Body Dataを確認する際にJMeterのGUIクライアントがフリーズしてしまうことがあったため、他の方法を考えることにした。

今回はその一つ対処方法として、JMeter内で指定したファイルをBase64エンコードしてJMeterの変数として扱う方法について解説する。

# 先にまとめ
「JSR223 PreProcessor」でBase64エンコードする処理を実装することで実現できる。

# 実装内容
スレッドグループ内のファイルアップロードを実施するHTTPリクエストの前に前処理>JSR223 PreProcessorを追加する。

元記事を表示

JVM – 全体構造

Java Virtual Machine (JVM) は、Javaプログラムを実行するための基盤です。この記事では、JVMの全体構造とその主要なコンポーネントについて解説します。

## JVMの概要

JVMは、Javaアプリケーションが任意の物理デバイス上で同じように動作することを保証するVMです。具体的には、Javaのコードを実行するための環境を提供し、Javaバイトコードを機械語に変換して、ホストマシン上で実行します。JVMは以下の主要な機能を持っています:

* ロード: クラスローダーを使用してJavaクラスファイルをメモリにロードします。
* 検証: バイトコードが正しい形式を持ち、安全に実行できることを確認します。
* 実行: インタープリターまたはJITコンパイラを使用してバイトコードを実行します。
* GC(ガーベージコレクション): 不要になったオブジェクトを自動的に削除し、メモリを管理します。

## JVMの全体構造

![jvm_architecture_hotspot.drawio (1).png](https://qiita-image-store.s3

元記事を表示

Mockitoの使い方 色々

# はじめに

本記事ではMockitoの基本的な使い方について(半分自分用のメモ的に)色々と記載していきます。

## Mockitoとは

Mockitoとはなんぞや?という方のために、軽く説明を記載しておきます。
MockitoとはJavaの単体テスト(JUnitなど)のために開発されたモックフレームワークです。
テストでモックオブジェクトを直感的に操作できることを目的として開発されており、
記述されたテストコードの可読性が高く、分かりやすい検証エラーを生成することが特徴です。

依存する部品(クラス)から任意の戻り値をテスト対象クラスに返すのが困難な場合などに、
部品をモック化することでテスト対象クラスに焦点を当てたテストを行うことが可能となります。

# ライブラリ追加

org.mockitoのライブラリをプロジェクトに追加し、依存関係を設定しておく必要があります。
例えば、Mavenの場合は以下の設定をpom.xmlのdependenciesに追加します。

“`pom.xml

org.mockit

元記事を表示

Java silver 合格証明証 発行方法について

Java silver合格証の発行方法が分からないためご教授いただけると幸いです。

ネットで検索すると下記(1枚目)のようなイメージ画がよく出て来ます。
![スクリーンショット 2024-04-10 19.28.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534562/c851f565-306f-c477-fc42-7ef8d1b68ab5.png)

実際の私の画面では2枚目のイメージのように視覚情報という項目が存在せず、表示できるのがスコアレポートのみとなっております。

![スクリーンショット 2024-04-10 19.26.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534562/a2853aba-ef57-790a-fab0-acb4e1b74058.png)

何卒、よろしくお願いいたします。

元記事を表示

集約とコンポジション

# はじめに
・集約とコンポジションの違いがよくわからなかったので自分なりに調べて、コードを実装し試してみた

# 集約
#### ChatGPTの回答
・集約は、「部分と全体」の関係を表現します。つまり、オブジェクト間の関係が「has-a」の形を取ります。
・集約では、部分オブジェクトがそのまま独立して存在できます。つまり、全体オブジェクトが破棄されても、部分オブジェクトは依然として存在し得ます。

#### 実装例
““ java:sample.java
public static void main(String[] args) {
Tire tire = new Tire();
Engine engine = new Engine();

Car car = new Car(tire, engine);

car = null;

// carがnullになってもTireクラスとEngineクラスは生きている
System.out.println(tire);
System.out.println(engine);
}

class Car {
privat

元記事を表示

Java 引数 戻り値

## 戻り値
メソッドの実行結果として返される値のこと

##### 戻り値をもつメソッドの定義
“`
public static 戻り値の型 メソッド名(引数リスト) {
メソッドの処理
return 戻り値;
}
“`

##### 戻り値を利用したメソッドの呼び出し
“`
型 変数名 = メソッド名(引数リスト);
“`
“`
例)
public class Main {
public static void main(String[] args) {
// 戻り値を利用したメソッドの呼び出し
int result = add(5, 3);
System.out.println(“合計: ” + result);
}

// メソッドの定義
public static int add(int num1, int num2) {
// メソッドの処理
int sum = num1 + num2;

// 戻り値の返却
return sum;
}
}

“`

#### 戻り値をそのまま使う
“`
☆変数に格納

元記事を表示

Java基本用語の備忘録【随時更新】

# 初めに

「プロになるJava」という書籍でJavaの勉強を始めたが、初心者なもので用語をよく忘れてしまう。そこで忘れそうな知識を整理しようと思った。

# 整理

クラス
基本単位の1つ。データのルールを決める仕組み。

メソッド
処理をひとまとめにしたもの。Javaはメソッドを呼び出すことで処理が進む。
“`java:メソッドの呼び出し
値.メソッド名()
値.メソッド名(引数)
“`

オーバーロード
メソッド名が同じでも異なる引数を受け取るメソッドを用意すること。そのため引数の区別も重要。

シグネチャ
「メソッド名・受け取る引数・戻り値」の種類をあわせたもの。

基本型・プリミティブ型
メソッドを呼び出せない。
| 型 | 値の種類 |
|:-:|:-:|
|`int`|整数|
|double|実数|
|boolean|論理値|
|char|文字|

参照型
クラスを含める基本型以外の型。メソッドを呼び出せる。

API
クラス単位で機能をまとめて、他のプログラムから呼

元記事を表示

Java メソッド 引数

“`
public class Main {
// メソッドA
public static void methodA() {
System.out.println(“メソッドA”);
// メソッドAからメソッドBを呼び出す
methodB();
}
// メソッドB
public static void methodB() {
System.out.println(“メソッドB”);
}

public static void main(String[] args) {
// mainメソッドからメソッドAを呼び出す
methodA();
}
}
“`
`main() → methodA() → methodB()`
の順番で実行される
mainメソッドより上に他のメソッドが定義されていても、プログラミングは必ずmainメソッドから動き始める。

## 引数
メソッドを呼び出す際に渡す値
#### なぜ必要か
①データの受け渡し
メソッド引数を使用することで、メソッド内で処理するために必要なデータを渡すことができる。メソッ

元記事を表示

【コツコツ学習】UtilityクラスとStaticメソッドについて

# Utilityクラスとは?

Utilityクラスは、共通の処理をstatic領域にまとめて、簡単に処理を呼び出すためのクラス

特徴としては以下の内容です

– staticメソッドとstatic変数
– インスタンス化できない
– 状態を持たない

# Staticのメリットは何か?

### インスタンスを生成せずに呼び出せること
インスタンス生成にかかるオーバーヘッドがなくなるので、インスタンス生成に時間がかかるクラスに有効です
そのため、頻繁に呼び出されるユーティリティメソッドはよくstaticメソッドとして実装されます

### 状態に依存しないことを保証できること
与えられた引数のみでメソッドの挙動が決まります(振る舞いが変わらない)
つまり副作用が発生しません

# Staticを利用するか否かの判断軸

### インスタンス毎に持つ意味があるかどうか
インスタンスごとに持つ意味がなければstaticメソッド、あればインスタンスメソッドにすべき

### オーバーライドされる予定がない
オーバーライドを前提としたメソッドは、インスタンスメソッドとして定義する必要が

元記事を表示

Azure Container Apps に war ファイルを直接デプロイする

# Azure Container Apps に war ファイルを直接デプロイする

ちょっと前に、 war ファイルを直接 Azure Container Apps にデプロイできるような機能が追加された話をTwitterで見つけたので、備忘録代わりに試してみました。

MS Learn にも記事があるので、そちらも参考にしてください。

[Azure Container Apps 内の Tomcat に WAR ファイルをデプロイする | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/container-apps/java-deploy-war-file)

## 事前準備

以下で適当な Spring Boot のプロジェクトのひな形を作成し、

[Spring Initializr](https://start.spring.io/)

適当に Hello World を返すだけの エンドポイントを追加しておきます。

“`java
@RestController
public class HelloCo

元記事を表示

[Google Calendar API(V3)] Javaでカレンダーのイベント変更を監視する

Google Calendar API V3(Java)を使用して、
Googleカレンダーのイベント変更を監視する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[イベントの変更を監視](#1-イベントの変更を監視)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[イベントの監視を停止](#2-イベントの監視を停止)|
|3||[変更通知を受信](#3-変更通知を受信)|

## 1. イベントの変更を監視
Googleカレンダーのイベントの変更を監視します。

### 1.1. スコープ
このAPIを実行するには、以下のい

元記事を表示

メソッドの定義

### メソッドの定義
“`
public static void メゾット名() {
メゾットが呼び出された時の処理
}
“`

### メソッドの呼び出し
“`
メソッド名()
“`

“`
例)
public class Main {
public static void main(String[] args) {
System.out.pirntln(“メソッドを呼び出します”);
hello();
System.out.println(“メソッドの呼び出しが終わりました”);
}
public static void hello() {
System.out.println(“こんにちは”);
}
}
“`
` hello();` メソッドを呼び出し
`public static void hello() {
System.out.println(“こんにちは”);
}` helloメソッドの本体

メソッドを利用するには必ず呼び出す必要がある!

元記事を表示

[Google Calendar API(V3)] GoogleカレンダーとEventクラス

Googleフォームを生成したり、情報を取得する際に使用する
com.google.api.services.calendar.model.Eventクラス
と実際のGoogleカレンダーのUIを関連づけてみました。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[イベント全体](#1-イベント全体)|
|2||[予定](#2-予定)|
||1|[イベントの開始時間・終了時間](#21-イベントの開始時間終了時間)|
||2|[会議関連情報](#22-会議関連情報)|
||3|[認証済みユーザーの予定のリマインダーに関する情報](#23-認証済みユーザーの予定のリマインダーに関する情報)|
||4|[予定の主催者](#24-予定の主催者)|
||5|[予定

元記事を表示

Java silver向け 例題 継承 コンストラクタ

次のコードはコンパイルエラーになりますか?

“`java
class sampleSuper {
sampleSuper(int a) {
}
}

class sampleSub extends sampleSuper{
sampleSub(int i){
}
}
“`
答え













サブクラスのコンストラクタ
sampleSub(int i){}でコンパイルエラーになる。

サブクラスのコンストラクタの引数の有無に関わらず、コンストラクタの1番目に暗黙的にsuper();が追加される。

“`java
class sampleSub extends sampleSuper{
sampleSub(int i){
//super();
}
}
“`

スーパークラスのコンストラクターsampleSuper(){}が呼び出されるが、スーパークラスのコンストラクタに引数が合致するものがないためコンパイルエラーになる。

スーパークラスにコンスト

元記事を表示

Cucumber・JUnit・Seleniumを駆使してブラウザテストを自動化する

# 概要

Cucumber・JUnit・Seleniumを組み合わせて、
ブラウザテストを自動化するための実装について紹介します。

デモ用の[GitHubリポジトリ](https://github.com/KentoHummer/cucumber-junit-selenium-demo)も作成しているので、参考にどうぞ!

# ライブラリ

## Cucumber関連

言わずと知れたBDDフレームワークですね。
本記事では以下のライブラリを使用します。

– [io.cucumber:cucumber-java](https://mvnrepository.com/artifact/io.cucumber/cucumber-java)
– CucumberをJavaで使用するために必要です
– [io.cucumber:cucumber-junit-platform-engine](https://mvnrepository.com/artifact/io.cucumber/cucumber-junit-platform-engine)
– Cucumbe

元記事を表示

OTHERカテゴリの最新記事