JAVA関連のことを調べてみた2023年02月12日

JAVA関連のことを調べてみた2023年02月12日

思い込みは排除してソースログを確認しながらデバッグする習慣を身につける  

# 目次
[1.この記事を書いた経緯](#1-この記事を書いた経緯)
[2. 実装で問題が起きた際の対応マニュアル的なの](#2-実装で問題が起きた際の対応マニュアル的なの)
[① 問題が起きた!!](#-問題が起きた)
[② ログを見て、大まかな原因を確認する](#-ログを見て大まかな原因を確認する)
[③デバッグして落ちている箇所を確認する](#デバッグして落ちている箇所を確認する)
[③-1 ②で「ここが原因だ!!と原因が起きている場所の予想が付く」かつ「予想した箇所がソースコードにブレイクポイントが張れる」場合](#-1-でここが原因だと原因が起きている場所の予想が付くかつ予想した箇所がソースコードにブレイクポイントが張れる場合)
[③-2 3③-1以外の場合](#-2-3-1以外の場合)
[④落ちている箇所でどんなエラーが出ているか・想定した値が入っているか確認](#落ちている箇所でどんなエラーが出ているか想定した値が入っているか確認)
[参考サイト](#参考サイト)

# 1. この記事を書いた経緯
私はよく、ソースコードでエラーが出た!!・落ちた!とかの問題が起きた際に

元記事を表示

HikariPoolでタイムアウトが頻発するときの原因と対処法

## 概要

SpringBootを利用してMariaDBに接続するアプリケーションにおいて、HikariPoolが以下のエラーを出してタイムアウトする事象について、原因と対処法についてまとめています。

“`java
java.sql.SQLTransientConnectionException: HikariPool-1 – Connection is not available, request timed out after 30000ms.
“`

## 原因と対処法

– 原因
– 以下の制限を超えるようなリクエストが処理しきれない場合に発生
– SpringBootで標準搭載されているConnection Pool=HikariCPのデフォルトコネクションプールの最大サイズが`10`
– HikariCPのconnectionTimeoutがデフォルトで`30秒`
– つまり、1回のトランザクション処理において時間のかかる処理があり、大量のリクエストが来て空いているコネクションが無く、30秒の待ち時間を経過してしまっ

元記事を表示

②フロントとサーバの通信方法(RPC) テキスト 通信

今回は、前回「①フロントとサーバの通信方法(RPC) テキスト 定義」の続きです。
実際に、サーバとクライアントで通信をしてみましょう。

クライアント側で、ボタンを用意して、ボタンを押す、「greetingService.greetServer」が実行されて
その結果、成功すると「onSuccess()」が呼び出されます。
失敗すると、「onFailure()」です。
今回は、前回「①フロントとサーバの通信方法(RPC) テキスト 定義」の続きです。
実際に、サーバとクライアントで通信をしてみましょう。

■クライアントから通信
“`

String p_send_txt=nameField.getText();
//文字列「p_send_txt」をサーバに送ります。
greetingService.greetServer(p_send_txt, new AsyncCallback() {

//失敗したら、これが呼び出される。
public void onFailure(Throwable caught)

元記事を表示

VisualStudioCodeでSpring Boot開発(設定)

前回はJDKのインストールから開始しました。
https://qiita.com/12krio@github/items/0b39cfb43cc07b40b679


以下を設定してみる
https://code.visualstudio.com/docs/java/java-spring-boot

Javaの拡張パックはインストール済みであるため
SpringBoot拡張パックをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25604/602a6e19-ea6d-2ece-0ae2-f307e966951f.png)

‘Spring Boot Extension Pack’を拡張機能で検索しインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25604/877564f0-c742-44b9-583a-9f545e0de878.png)

‘vsc

元記事を表示

Spring Boot WEBサービスを ACA (Azure Container Apps) 環境で起動する

# Spring Boot WEBサービスを ACA (Azure Container Apps) 環境で起動する

## 目的
[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を [Azure Container Apps](https://learn.microsoft.com/ja-jp/azure/container-apps/overview) 環境で起動して理解を深めます。
※ Windows 11 Home 22H2 を使用しています。
※ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方にも参考になると思います。

## 環境

WSL (Microsoft Store アプリ版)

“`sh
> wsl –version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1

元記事を表示

Spring Boot WEBサービスを Azure App Service 環境で起動する

# Spring Boot WEBサービスを Azure App Service 環境で起動する

## 目的
[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を [Azure App Service](https://learn.microsoft.com/ja-jp/azure/app-service/overview) 環境で起動して理解を深めます。
※ Windows 11 Home 22H2 を使用しています。
※ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方にも参考になると思います。

## 環境

WSL (Microsoft Store アプリ版)

“`sh
> wsl –version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.

元記事を表示

GaugeでIntellijから実行するとFailed to get configuration from Gauge properties fileというエラーが出る

# はじめに

転職して最初に利用することになったテストフレームワーク`Gauge`を導入するのにつまづいたところをまとめます
今後ずっと利用していく技術になりそうです

# 問題

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/1596385e-ab9b-6d49-1d4d-e16ae7f42bc2.png)

Intellijで`Gauge`をUI上から実行すると以下のエラーが発生しました

“`
/usr/local/bin/gauge run –machine-readable –hide-suggestion –simple-console /home/watanabejin/workspace/gauge-e2e/specs/example.spec
Testing started at 11:20 …
2023/02/11 11:20:02 Failed to get configuration from Gauge properties file

元記事を表示

IntellijのKotlin実行で失敗するときにみたところ

# はじめに

この記事を書こうと事前にエラーをメモっておいたのですが、わかりやすいエラーの部分をコピーしておらず微妙なタイトルになりました
もし実行できなくて困った方はこの可能性があるかもしれないので、確認してみてください

# 問題

Intellijで実行をUIからすると以下のエラーがでました

“`
[INFO] ————————————————————————
[INFO] BUILD FAILURE
[INFO] ————————————————————————
[INFO] Total time: 33.558 s
[INFO] Finished at: 2023-02-11T10:29:35+09:00
[INFO] ————————————————————————
[ERROR]

元記事を表示

java.lang.IllegalStateException: Unable to load cache itemエラーが発生する

# はじめに

Javaのテストツールを導入しようとした際に発生したエラーです

# 問題

`mvn test`をしたところ以下のエラーが発生しました

“`
watanabejin@watanabejin-Latitude-3520:~/workspace/gauge-e2e$ mvn test
[ERROR] Error executing Maven.
[ERROR] java.lang.IllegalStateException: Unable to load cache item
[ERROR] Caused by: Unable to load cache item
[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper
[ERROR] Caused by: Exception com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.ref

元記事を表示

コードレビュー時に使ったことがあるドキュメント集

個人的に忘れるのでストックする目的ですが色々参考になると思うので、記事化します。

※適宜更新
※2022年10月〜2022年12月にかけてPR(MR)をReviewするときに使用したもの(または指摘を受けて参照したもの)

随時加筆修正はするつもり。

https://qiita.com/shoheiyokoyama/items/d752834a6a2e208b90ca

https://qiita.com/rkonno/items/1b30daf83854fecbb814

https://www.techscore.com/tech/DesignPattern/Facade#:~:text=Facade%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AF%E3%80%81%E6%97%A2%E5%AD%98%E3%81%AE,%E3%81%AE%E6%AD%A3%E9%9D%A2%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%80%82

元記事を表示

JAVA C# Ts GoのC系言語 Mind DNCLの日本語系言語の制御構文を比較して自作言語Re:Mindの構文を定める(for..if文)

# はじめに
JAVA C# Ts Goの新旧C系言語、Mind DNCLの日本語系言語の制御構文を比較して自作言語Re:Mindの構文を定めます。今回は少し複雑なループ制御。

自作言語Re:Mindの詳しい利用シーンのイメージは[こちらへ](https://qiita.com/mylifewithviolin/items/9d58db8a101807c19bde)。すみません、企画段階です。

## この記事内容の作業目的
[日本語トランスコンパイラ言語 Re:Mind (自作言語)と他言語との構文比較(FOR文)](https://qiita.com/mylifewithviolin/items/b669e02ecc8595e72b8f)という記事で、もっともシンプルなfor文(カウンタ変数なし、打ち切り条件なしの無限ループ)について検討しましたので、今回は比較的複雑なカウンタ変数ありの構文に加えて、間にif文で打ち切り条件がカウンタ満了前に入っている状態をモチーフとします。

## この記事内容の保証
※この記事には実装的な情報が含まれます。各言語で書かれた引用ソースの妥当性は

元記事を表示

エラー対処:References to interface static methods are allowed only at source level 1.8 or above Java(1610613404)

エラー対処の備忘録です。

MavenプロジェクトでJavaのコードを書き始めた時に、次のようなエラーが出ました。

“`
References to interface static methods are allowed only at source level 1.8 or above Java(1610613404)
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123353/25f0f899-4c6c-bf31-54b1-d85a9673af93.png)

### 原因

原因は`maven-compiler-plugin`の設定でソースのjavaバージョンを指定していなかったためでした。(デフォルトでは1.7でした[^1])
[^1]:https://maven.apache.org/plugins/maven-compiler-plugin/

javaでインターフェースにstaticメソッドを定義できるようになったのはバージョン1.8からなので、そのメソッ

元記事を表示

Kubernetes 環境の Spring Boot WEBサービスのリバースプロキシ構成

# Kubernetes 環境の Spring Boot WEBサービスのリバースプロキシ構成

## 目的
[Kubernetes 環境で起動した Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/48cec2f3b87811411b61)にリバースプロキシを設定して理解を深めます。
※ Windows 11 Home 22H2 を使用しています。
※ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方にも参考になると思います。

## 環境

WSL (Microsoft Store アプリ版)

“`sh
> wsl –version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
“`

Ubuntu

“`sh
$ lsb_release -a
No LSB modules are

元記事を表示

Spring Boot WEBサービスを Kubernetes 環境で起動する

# Spring Boot WEBサービスを Kubernetes 環境で起動する

## 目的
[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を Kubernetes 環境で起動して理解を深めます。
※ Windows 11 Home 22H2 を使用しています。
※ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方にも参考になると思います。

## 環境

WSL (Microsoft Store アプリ版)

“`sh
> wsl –version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
“`

Ubuntu

“`sh
$ lsb_release -a
No LSB modules are available.
Distrib

元記事を表示

Map.Entry interface

Entry interface is innner interface of Map interface
Entry is key + value .
“`java
public class Outer {
public static void main(String args[]) {
Map mp = new LinkedHashMap<>();
Entry e = entry(“sato-a”,100);
Entry e1 = entry(“sato-b”,101);
Entry e2 = entry(“sato-c”,102);
mp = Map.ofEntries(e,e1,e2);
Set> s = mp.entrySet();
mp.entrySet().forEach((Entry

元記事を表示

eclipseのインストール(覚書)

eclipse(pleiades)及び、STSのインストール覚書です。

難しい内容ではないけど、ドがつく初心者なので「どうして私ここまで辿り着けたんだっけ?」と分からなくなること多しなので、記録として覚書しておこうと思います!

Macです。

Eclipseは英語版のみなので(私は英語が得意ではないので)、日本語化するために「Pleiades」というものを使います。

-Eclipseのインストール-

1.googleで「Pleiades」と検索
2.Versionは2019を選択
3.Mac 64bit/FullEdition/Javaを選択
4.ダウンロード完了したら、ファイルをダブルクリック

5.開発のためのWorkspaceフォルダーを作成しておく

6.Eclipseを開くと、どの場所で開発する?と聞かれるので、作成したWorkspaceを選択
(Eclipse開けない→アプリケーションフォルダで、Ctrl押しながらEclipseクリック、開く選択、警告は無視して開く)
これでEclipseは完了。

次に、フレームワーク使いたいのでSpringBootをインストール

元記事を表示

HashSet , TreeSet class

Setは重複値を許容しない
HashSetは並び替えなし。以下の例では並び変わっているように見えるが、偶然
TreeSetは並び替えあり
“`java
public class Outer {
public static void main(String args[]) {
Set hs = new HashSet<>();
hs.add(“Z”);
hs.add(“C”);
hs.add(“V”);
hs.add(“B”);
hs.add(“A”);
hs.forEach(System.out::println);
Supplier s = () -> {System.out.println(“—–“);return null;};
s.get();
Set ts = new TreeSet<>();
ts.add(“Z”);
ts.add(“D”

元記事を表示

Docker 環境の Spring Boot WEBサービスのリバースプロキシ構成

# Docker 環境の Spring Boot WEBサービスのリバースプロキシ構成

## 目的
[Docker 環境で起動した Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/41dd8b4e18213aab1775)にリバースプロキシを設定して理解を深めます。
※ Windows 11 Home 22H2 を使用しています。
※ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方にも参考になると思います。

## 環境

WSL (Microsoft Store アプリ版)

“`sh
> wsl –version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
“`

Ubuntu

“`sh
$ lsb_release -a
No LSB modules are availab

元記事を表示

Queue , Deque class

Queue performs FIFO(First In First Out) Queue
Deque is Double ended Queue. we can use addFirst or addLast to DeQueue.

“`java
public class Outer {
public static void main(String args[]) {
Queue q = new ArrayDeque<>();
q.add(1);
q.add(2);
q.add(3);
q.forEach(System.out::println);
}
}
“`
“`
1
2
3
“`
“`java
public class Outer {
public static void main(String args[]) {
Deque q = new ArrayDeque<>();
q.add(1);

元記事を表示

ArrayList, LinkedList, Vector

ArrayListは動的配列拡張
LinkedListは数珠繋ぎ
Vectorはthread safe

“`java
public class Outer {
public static void main(String args[]) {
List l = new ArrayList<>();
l.add(“A”);
l.add(“B”);
l.add(“C”);
l.forEach(System.out::println);
Consumer con = x -> System.out.println(“——–“);
con.accept(null);
l.parallelStream().forEach(System.out::println);
con.accept(null);
List l2 = new LinkedList<>();
l2.add

元記事を表示

OTHERカテゴリの最新記事