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

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

Java初学者が簡単なプログラムを作ったときに詰まったところ~オブジェクト指向、クラスの定義、フィールド、メソッドの定義、コンストラクター…etc~

## はじめに

Javaに入門し、基本的な記述方法(MapとかListとかforとかstrieamとか)は掴めたものの、プログラムを実際に組む段になっていろいろ詰まったので、理解を深めることも兼ねてアウトプットしておきます。

## 作成したプログラムの内容

– 図書管理システムを作る
– 書籍を管理する情報を持つオブジェクト(class)を作って、そこに情報を格納する
– 図書館見ないなものを作ってそこにBookをListで持つようなものを保持する
– mainメソッドからこのLibraryclassに対して検索できるようにする。Libraryクラスは書籍検索の機能を持つ
– タイトル検索、著者検索、番号検索メソッドをLibraryに持たせる
– それをmainメソッドから実行して、実行結果をコンソールに出力する

## 詰まったところ

### そもそも何をすればいいかわからない

オブジェクト指向については簡単に学んでいたので、まずは課題内容からオブジェクトを作ることから始めました

– 個々の本のオブジェクト:Book class

元記事を表示

IntelliJで日本語が文字化けしたときに確認したい3つの項目

## はじめに
Javaの勉強を始め、はじめてIntelliJを触りました。
ただ、自分の環境ではコンソール画面で日本語の文字化けが発生してしまい、解消に時間がかかってしまったので、解消した方法を記録しておきます。

### 環境
– Windows11
– IntelliJ IDEA 2024.2.4 (Community Edition)
– Oracle OpenJDK 21.0.5

## 問題
– コンソール画面で日本語が文字化けする
“`java
// ソースコード
package org.example;
public class Main {
public static void main (String[] args) {
System.out.println(“こんにちは!”);
}
}
“`
“`bash
// 実行結果
9:18:07: ‘:org.example.Main.main()’ を実行中…

> Task :compileJava
> Task :processResources NO-SOURCE
>

元記事を表示

【AWS SDK】SdkClientException(例外)対策…リトライ処理を記述しよう【Java】

# 背景(はじめに)
 AWS SDK for Java 2.xのAPIを呼び出しているプログラム内で、SdkClientException(例外)が不定期に発生していました。そのプログラム内ではSdkClientExceptionを想定してなかったため、発生するとプログラムが異常終了していたようです。
 本記事に、簡単にですが説明と実施した対策を残します。

:warning: **こちらは社内に2022年8月頃に公開したメモです。**

## SdkClientExceptionって何?
[SdkClientException](https://docs.aws.amazon.com/ja_jp/sdk-for-java/latest/developer-guide/handling-exceptions.html#sdkclientexception)
> SdkClientException は、AWS にリクエストを送信しようとしたとき、または AWS からの応答を解析しようとしたときに、Java クライアントコード内で問題が発生したことを示しています。SdkClientEx

元記事を表示

SpringBootにおけるコントローラからの画面遷移(超基本)

# 概要
表題の件について、基本がわかっていなかったので、まとめてみました。

# 前提条件
コントローラのクラスに`@Requestmapping(“/home”)`を設定、`doGet()`メソッドに`@Getmapping(“/foo”)`を設定している場合に、`return “記述部分”;`の記述部分に何を書くかという前提条件です。

# パスのみ記述した場合
例えば、`home/foo`と記述した場合、それをビュー名として解釈し、ビューリゾルバによって適切なビュー(Thymeleafであれば、resources/templatesフォルダの中のhome/foo.html)を探してレンダリングします。ビューリゾルバは、ビュー名をどのように解釈するかを設定ファイルやビューテンプレートエンジンに基づいて判断します。

# forward:パスと記述した場合
現在のリクエストが/homeであり、`forward:home/foo`を指定した場合、Springはこれを相対パスとして解釈し、/home/home/fooのように/homeを基準に相対的に解決することになります。

# re

元記事を表示

初心者向け:Java WebSocketクライアントのススメ

もし、あなたがJavaアプリケーションをリアルタイムで通信させる方法について疑問に思ったことがあるなら、あなたは正しい場所に来ました。このガイドでは、Java WebSocketクライアントの魅力的な世界に飛び込んでみます。WebSocketsが何であるか、それがなぜ重要なのか、そして自分のJava WebSocketクライアントを構築する方法について探ります。さらに、開発プロセスをスムーズにするためのツール、例えばapidogについても触れます。

## WebSocketsとは何ですか?
[WebSockets](https://apidog.com/articles/websocket-protocol/)は、単一のTCP接続を介して全二重通信チャネルを提供するプロトコルです。HTTPのようにリクエスト-レスポンスに基づくものとは異なり、WebSocketsは継続的な双方向通信を可能にします。これにより、チャットアプリケーション、ライブスポーツの更新、オンラインゲームなど、リアルタイムでの更新が必要なアプリケーションに最適です。

## なぜJavaを使ってWebSocketク

元記事を表示

Google がサポートする Java ランタイムと作成済み SpringBoot の jar を使用して Cloud Run にアプリケーションをデプロイする方法

gradle bootjar で作成済みの jar を使って、コンテナイメージの作成からサービスのデプロイまでを gcloud run deploy で行う方法についてまとめます。

Dockerfile を使って Docker Hub からイメージを呼び込むと Google のサポート外のランタイム環境になってしまうのは [Google のサポートを受けられるように Python アプリをデプロイする方法](https://qiita.com/mushufushu/items/8ee9215e7e01ba74f9a8)で書いたことと同様です。

# 前提条件
SpringBoot の jar ファイル作成済みであること
※この記事では gradle bootjar コマンドを使用して jar を出力しています。

# 1 デプロイ用のワークディレクトリを作成
“`
mkdir deploy
cd deploy
“`
# 2 jar ファイルを配置
cp などで deploy 配下に持ってくる。

# 3 ビルダーと Java のランタイムの固定
同階層に project.toml

元記事を表示

SessionスコープのBeanを利用しようとしたらハマった話

# はじめに
SessionスコープのBeanを利用したかったので、`@SessionScope`を使った実装をしたところ、デッドループが発生してしまったので、その原因と解決方法を調べた際の記録です。

# SessionスコープのBeanを利用したかったが、デッドループが発生
SessionスコープのBeanを利用して、そのSession中で有効なBean(例えば、ECサイトのショッピングカート)を作るため、`@Component`と`@SessionScope`を付与したクラス(仮に「Cart」クラスとします。)を作成しました。
そして、セッション開始時にCartクラスが持つカートの中の商品を表すリスト`itemList`を初期化するため、`HttpSessionListener`において`ArrayList`を生成して初期化をしようとしました。
ところが、その初期化をする処理が何度も呼び出され(`HttpSessionListener`の`sessionCreated`が何度も呼び出され)、デッドループが発生してしまいました。

# 原因はプロキシ?
ここでかなりハマって色々と調

元記事を表示

【Spring Boot入門】#5 ID検索機能を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

登録情報一覧画面の表示については、前回の記事を参照ください。

https://qiita.com/ioaio/items/8fde25d6c2c27a95d9a3

## 概要
検索ボックスを追加し、企業IDに紐づく企業情報を検索できるようにする機能を作成します。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/52b635b5-8acd-2a85-11e4-10fa4462bbf3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/5525a929-8588-cf6f-453a-7c2ffefd044a.png)

未登録の企業IDが検索された場合は、エラーメッセージ

元記事を表示

【Spring Boot入門】#4 登録情報一覧画面を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

入力チェックの追加については、前回の記事を参照ください。

https://qiita.com/ioaio/items/d382212eeae4434cae9c

## 概要
既に登録済みの企業情報の一覧を表示する画面を作成していきます。
新規登録画面にページ遷移できるようにアンカーリンクも追加します。
また、新規登録後に登録完了画面を表示していたのを、企業情報一覧画面を表示するようにも修正します。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/7985036e-cb94-2412-d598-b15d5f4cd204.png)

## パッケージ構成
赤枠で囲ったHTMLファイルを今回作成していきます。また、青枠で囲ったクラスを編集していきます。

![image.png](https://

元記事を表示

EclipseでTomcatサーバーが起動失敗する件について

初めて書きます
自分の備忘録と同じ問題があった誰かのために

## エラーの内容について

Udemyの動画で勉強していた時、
以下エラーがEclipseでTomcatサーバーを再起動しようとしたときに発生した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3634569/202d09ce-0cbb-05ae-734f-614439cc686b.png)

いろいろ調べたがいまいち原因がわからん。
教えて偉い人

## 試したこと

・Eclipse再起動
・PC再起動
・直前に作成したサーブレットやJSPを削除

どれをやっても解決せず

## 解決方法
ネットで検索してweb.xmlが勝手に作成されていて削除したら解決したという記載を発見したため
以下のファイルを削除してみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3634569/1e5a5476-011e-6443-cb7

元記事を表示

JUnitの使い方 #忘備録

## JUnitのユーザーガイド
以下のJUnitのユーザーガイドを参考にJUnitの基本的な使い方を
まとめました。

https://junit.org/junit5/docs/current/user-guide/

## 基本的な使い方
 1、テスト対象クラスを作成する
 2、テストメソッドを作成する
 3、アノテーションを付けてテストを実行する
 4、テスト結果を確認する

### 1. テスト対象のクラスを作成
Calculator.javaというクラスを作成しています。
足し算・引き算を行う簡単なメソッドを定義しています。

“`java

package hogehoge;

public class Calculator {

// テストメソッド:足し算
public int add(int a, int b) {
return a + b;
}

// テストメソッド:引き算
public int subtract(int a, int b) {
return a – b;
}

}

“`

### 2. テストクラスを作成
Calcu

元記事を表示

Javaの基本データ型とラッパークラス: BoxingとUnboxingの仕組み

Javaには、基本データ型(プリミティブ型)とそれに対応するラッパークラスが存在します。基本データ型は直接メモリに格納されるシンプルなデータ型ですが、Javaのコレクションフレームワークなどのオブジェクト型が必要な場面ではラッパークラスが利用されます。この基本データ型とラッパークラス間の自動変換を、それぞれ Boxing と Unboxing と呼びます。この記事では、BoxingとUnboxingの仕組み、各基本データ型に対応するラッパークラス、そして実際の使用例をご紹介します。

## 1. BoxingとUnboxingとは?
Boxing: 基本データ型から対応するラッパークラスへの自動変換のこと。Javaでは基本データ型(int, double など)をラッパークラス(Integer, Double など)に自動的に変換できます。
Unboxing: ラッパークラスから基本データ型への自動変換のこと。
Boxingの逆で、Integer から int などの変換が自動で行われます。
Java 5 以降では、BoxingとUnboxingは自動的に行われるため、コードがシンプ

元記事を表示

スタックを活用した文字列展開アルゴリズム

## 問題概要
与えられた文字列には、括弧で囲まれたパターンと繰り返し回数が含まれています。この文字列を解釈し、括弧内のパターンを繰り返して最終的な文字列を返すことが目標です。括弧は入れ子になっている場合があり、それぞれのパターンは括弧の外にある数字に基づいて複数回繰り返されます。

### 例
– 入力: `”3(a2(b))ef”`
出力: `”abbabbabbef”`
– 入力: `”2(2(ab)3(2(ac)))”`
出力: `”abacabacabacabacabacabacabacabac”`

## 使用するデータ構造
### 1. **スタック (Stack)**
– **スタック**はLIFO(Last In, First Out)構造で、最後に追加された要素が最初に取り出されます。
– この問題では、括弧を効果的に処理するためにスタックを使用します。入れ子になった括弧に遭遇したとき、スタックを利用してその括弧内のパターンを抽出し、繰り返し処理を行います。

## 問題解決のアプローチ

### 1. **文字列の走査と文字の処理**

元記事を表示

Java 品質を高める例外処理とマルチキャッチ構文まとめ

`IOException`: 入出力操作でエラーが発生した場合にスロー
`FileNotFoundException`: 指定されたファイルが見つからないときにスロー
`SQLException`: データベース操作中にエラーが発生した場合にスロー
`NumberFormatException`: 無効な数値文字列を数値型に変換しようとしたときにスロー
`ArithmeticException`: 算術演算で不正な操作(例: 0 での除算)をしたときにスロー
`ClassCastException`: オブジェクトを互換性のない型にキャストしたときにスロー
`NullPointerException`: null 参照に対してメソッドを呼び出したときにスロー
`ReflectiveOperationException`: リフレクション操作でエラーが発生したときにスロー

## テンプレート 1: ファイル読み込みとマルチキャッチ
“`java
import java.io.BufferedReader;
import java.io.FileReader;
import j

元記事を表示

OptaPlannerのHelloWorld

## はじめに
 OptaPlannerを久しぶりに手を付けてみようと思う。しかしながら、HelloWorldを動かすのに手こずったのでメモを。
– OptaPlannerのチュートリアル
– https://www.optaplanner.org/docs/optaplanner/latest/quickstart/hello-world/hello-world-quickstart.html#helloWorldJavaQuickStart
## 環境
– OptaPlanner 9.44.0.Final
– OpenJDK 21.0.5
– gradle 8.10.2

## うまくいかない
 チュートリアルの言うとおりにやってみたが、以下の表示になり何も表示されない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90251/4da1da90-5081-4fa0-8da4-7f2d81c12347.png)

 しばらく眺めていろいろ試したがなにも変わらず。
 メ

元記事を表示

システムトレイに常駐するプログラムのサンプルコード

Javaでシステムトレイに常駐するプログラムを作成する機会があったので、サンプルコードを紹介します。

# サンプルコードの概要

– システムトレイに常駐するプログラムを作成する
– アイコンには指定のpngファイルを利用する
– https://www.irasutoya.com/2017/06/blog-post_572.html
– アイコンを右クリックするとポップアップメニューが表示される
– Helloメニューを押下すると、通知を表示する
– Exitメニューを押下すると、プログラムが終了し、システムトレイからアイコンが削除される

# サンプルコード

“`Main.java
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.i

元記事を表示

java初学者の学習メモ

# 概要
今回はjavaで基礎学習用のコードを書いてみました。
これから少しずつjavaの学習記録を残してまいります。
学習のメモ程度に記述していますのでご承知ください。

## 実行環境
・windows:Windows11Pro 23H2
・java:22.0.1
・統合開発環境:Eclipse

## クラス
“`Java:Sample.java
package helloworld;

public class Sample {

public static void main(String[] args) {
Car.getinitnum();
Car car1 = new Car();
car1.setNum();
int get_num= car1.getNum();
System.out.println(“get_num >>>” + get_num);
}

}

“`
“`java:Car.java
package helloworld;

public class Car {
//クラス変数
public static int

元記事を表示

Java Silver資格試験にむけた学習ページ

## 今回の目的
java silver資格試験に向けて勉強中のエンジニアがjava学習のために書いている記事です。
用語やjavaルールを忘れないために学習の一環として書いています。
どうぞお手柔らかに。

## プログラム実行までの流れ
①java言語仕様にそってプログラムを作成して、拡張子.javaファイルを作成
②コンパイラが起動して、作成したプログラムがコンパイルされる。コンパイルされると拡張子.classファイルが作成される。
③javaコマンドによって、プログラムがJVM上で実行される

## リテラリ
ソースプログラムの中で直接書き込まれたもの。
表現できるデータには、数値、文字列、null、真偽値がある

## データの型
基本データ型は以下の8種類ある

| 種類 | データの型 | サイズ | 表現できる値 |
|:-:|:-:|:-:|:-:|
| 整数 | byte | 8ビット | -128~127 |
| | short | 16ビット | -32768~32767 |
| | int | 32ビット | -2147483628

元記事を表示

Javaでマウスポインタを動かしたい

以下のステップでマウスポインタを動かすことができます。

1. `MouseInfo.getPointerInfo`で現在のマウスポインタの位置を取得する
2. `Robot.mouseMove`を利用してマウスポインタを動かします

例: x軸方向に1ピクセル、y軸方向に1ピクセル、マウスポインタを1分おきに動かす

“`java
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.util.concurrent.TimeUnit;

public class MoveMouse {
public static void main(String[] args) throws AWTException, InterruptedException {
Robot robot = new Robot();
while (true) {
Point p

元記事を表示

CATALINA_BASE環境変数を利用してTomcatを複数起動する方法

## 1. はじめに

JavaのWebアプリ開発でServletエンジンとして Apache Tomcat が使われることが多いのではないでしょうか。一般的な書籍や研修等で簡単な使い方は教わりますが、同一ホスト上で複数のTomcatインスタンスを起動させる方法はあまり知られておらず、若手メンバがよく質問されるので今回はその方法について説明したいと思います。なおTomcatはサービスではなく、利用時にコマンドで起動させるZip版を対象とします。

## 2. 環境変数を定義する

Java開発では`JAVA_HOME`、`MAVEN_HOME`等、`XXX_HOME`というディレクトリを指定する環境変数がよく使われます。Tomcatの場合も同様でTomcatのインストールディレクトリは`CATALINA_HOME`となります。
複数Tomcatを起動させるポイントは`CATALINA_HOME`に加えて`CATALINA_BASE`という別のTomcatインスタンス用の環境変数を定義することです。

| 変数 | 値 | 説明 |
|:—:|:–:|:—-|
| JAVA_H

元記事を表示

OTHERカテゴリの最新記事