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

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

Javaコマンドでクラスパス指定時に注意すること

## 前提
**Windows11**を使用しています
ディレクトリの指定は**相対パス**で行います

## 構成
例えば以下のディレクトリ構成を想定します
“`:H:\Java
H:\Java
├─B
│ │
│ └─Y
│ Sub.java

├─C
│ │
│ └─Z
│ Base.java

└─A

└─X
Main.java
“`
それぞれのコードの実装は以下の通りです
“`:H:\Java\A\X\Main.java
package X;

import Y.Sub;
import Z.Base;

public class Main {
public static void main(String[] args) {
new Sub().Message();
new Base().Run();
}
}
“`
“`:H:\Java\B\Y\Sub.java
package Y;

public

元記事を表示

簡単springbootでのFilter実装

# 目的
Filterで設定した状態でない場合に、特定にURLに遷移しようとするとフィルター機能を実装すること。
(例)ログインしていないユーザーがログインユーザー限定のURL(/userEdit/)などに入ろうとした場合、下記のように弾かれること。
![ログインフィルター 2023-09-28 164906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/996dd646-7b01-b84f-03dc-dd234faf28b3.png)

# 実装手順
1.Filterの定義
2.FilterConfig.java(URLの適用設定)
3.まとめ

# 1.Filterの定義
LoginFilter.java→フィルター機能の内容を記述。

コードについて
doFilterメソッド→ここでフィルタリング処理を行っている。requestとresponseを引数として受け取り、チェーン内の次のフィルターまたはサーブレットにリクエストとレスポンスを渡す。
リクエストを型変換して、セッション情

元記事を表示

Java JDKとSDKとは

## JDKとは

– JDK (Java Development Kit)
ソフトウェアパッケージのこと
ソースコードを機械語へ変換するコンパイラや
機械語を実行するJVM (Java仮想マシーン)等が含まれている

## SDKとは

– SDK (Software Development Kit)
コンパイラ等、開発時に使用するツールのこと
Javaの場合はJDKのことを指す

元記事を表示

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみた

# 概要

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index2.html

# 実装

以下のファイルを作成しました。
“`JSample2_3.java
import java.util.Scanner;
import java.util.InputMismatchException;

class JSample2_3{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

try{
System.out.println(“年齢を入力してください”);
int old = scanner.nextInt(16);

System.out.println(“年齢は” + old + “です”);
}catch (InputMismatchEx

元記事を表示

【Java・学習ログ13】文字列処理について

教本に沿ってやってみたシリーズ、『第15章』その1。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ
## ■基本的な文字列操作

文字列の内容を調査するメソッドがStringクラスに用意されている。

#### 【調査】
| | |
|-|-|
|内容が等しいか調べる|public boolean equals(Object o)|
|大文字、小文字を区別せず等しいか調べる|public boolean equalsIgnoreCase(String s)|
|文字列長を調べる|public int length()|
|空文字か(長さが0か)を調べる|public boolean isEmpty()|

※大文字・小文字の区別のことを**文字のケース**という。

#### 【検索】
| | |
|-|-|
|一部に文字列sを含むかを調べる|public boo

元記事を表示

java、SQLメモ

任意のテーブルにレコードを追加する
“`java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;

try {
// データベースへの接続を確立
connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydatabase”, “us

元記事を表示

JavaFX の InvocationTargetExceptionを治す

# 環境
InteliJ IDEA
JDK21
ビルドツールとしてMavenを使用

# 問題

以下のような
・TestWindow.java
・TestWindowController.java
・test-view.fxml
の3ファイルで構成されている単純なJavaFXアプリケーションをTestWindow#main()から実行すると、InvocationTargetExceptionがスローされる。

実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368194/79c280a7-6380-b341-7e76-3145fbeeb1a3.png)

“`java:TestWindow.java
package com.example.hoge;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javaf

元記事を表示

Mac向けマインクラフトMOD開発環境のセットアップ

# Mac向けマインクラフトMOD開発環境のセットアップ

– [著者の環境情報](#環境情報)
– [これからダウンロードする3つのツールについて](#これからダウンロードする3つのツールについて)
– [インストールについて](#インストールについて)
– [コマンドライン操作のセクション](#コマンドライン操作のセクション)
– [主要なファイルの説明](#主要なファイルの説明)
– [主に開発において変更や作成をするファイル](#主に開発において変更や作成をするファイル)

## 環境情報

### OS
– **バージョン**: macOS Ventura [13.0.1]

### Java
– **バージョン**: java version [1.8.0_381]
– **インストールパス**: [/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home]

### Forge
– **バージョン**: forge [1.12.2]

### IDE
– **名称**: [Eclipse]
– **バージョン

元記事を表示

GithubActionsを利用してJavaアプリのテストを自動化する

`GithubActions`を使ってGithub上でリソースを管理しているJavaアプリのテストを自動化してみる。
今回はGithubActionsの触りということで、簡単なUnitテストのみやってみる。

## 初期状態

Githubの以下の構成からスタート。

“`
RepositoryRoot
/SampleJavaApp(EclipseJavaプロジェクト)
/src/main/java
Sample.java
/src/test/java
SampleTest.java
/gradle/wrapper
gradle-wrapper.jar
gradle-wrapper.properties
build.gradle
gradlew
gradlew.bat
“`

Gitリポジトリの下にJavaアプリリソースを管理するEclipseプロジェクトフォルダがある感じ。

`main`ブランチから派生したブランチを作成し、

元記事を表示

Disqus APIを使用してフォーラムのスレッドと投稿を取得する方法

[Disqus](https://disqus.com/)は、ウェブサイトにコメント機能を追加するための人気のあるプラットフォームです。この記事では、Javaを使用してDisqus APIからフォーラムのスレッドと投稿を取得する方法を解説します。

# 1. 必要なライブラリのインポート

まず、以下のライブラリをプロジェクトに追加する必要があります。
– `OkHttpClient`: HTTPリクエストを行うためのライブラリ
– `Gson`: JSONのシリアル化およびデシリアル化のためのライブラリ

`OkHttpClient`と`Gson`をMavenプロジェクトに追加するには、`pom.xml`ファイルに対応する依存関係を追加する必要があります。

以下は、それぞれのライブラリのMaven依存関係です:

1. **OkHttpClient**:
“`xml

com.squareup.okhttp3
okhttp

元記事を表示

Unsupported major.minor version 52.0 の原因と解消法

## 環境
– 言語 Java
– 開発環境 IntelliJ

## 事象
昨日、プロジェクトコンパイル時に以下のエラーが出力された。
“`kotlin:エラーログ
org/jetbrains/kotlin/idea/gradleTooling/AndroidAwareGradleModelProvider : Unsupported major.minor version 52.0
“`

## 調査結果
JDKとJREのバージョン差異で発生する。

## 対応
以下3つを統一させる。

・システム環境変数「JAVA_HOME」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/e8c13b32-3fab-bfb0-8ae2-7a05acac14a6.png)

・プロジェクトのSDK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/cda9b897-09

元記事を表示

デザインパターン Decoratorパターン

# Decoratorパターン
Decoratorパターンは、継承の代わりにコンポジションを使用するデザインパターン。

継承の代替手段として知られ、継承を利用するよりも柔軟に機能追加を行うことができる。**継承を避けたい場合に特に有用**。

継承がコンパイル時に機能を追加しているのに対して、Decoratorパターンはプログラムの実行時に機能を追加しているため、クラスの変更が最小限に抑えられ、柔軟性が向上する。

具体的には、オブジェクトをラップし、親クラスへの参照を保持したクラスを利用することで、ラップするごとに独自の機能を追加していくことができる。

ランタイム時に機能を追加することができ、これによって機能を拡張させることができる。

コードが複雑になるという欠点を持つ。

`java.io`パッケージの`InputStream`に関連するものや、UIフレームワークで利用されている。

## Decoratorパターンが利用できるシチュエーション
バーガーショップの注文システムを作成するとする。

バーガーは「ハンバーガー」「チーズバーガー」の2種類があり、その他オプションとし

元記事を表示

テストしやすいJavaコードを書く 

普段業務でJavaを書く際、テストコードを意識したコードを書いているが、それを言語化してみた。

## 本稿の対象ユーザー

* テスト駆動開発を期待した人は回れ右。
* 普段からテストコードを意識してコードがかけている人は回れ右。
* Java に関して基本的な知識がある。
* Java で Spring か Jakarta EE(あるいは Java EE) のアプリの構造を知っている。

# テストコードのありがたみ

私は、前職の SIer 時代はテストコードを書くのがあまり好きではなかった。
単純に動作確認するだけであれば普通にアプリを動かすか、デバッグ機能で検証した方がわざわざ実装するよりも早いケースがほとんどだと思うし、テストコードを書く場合はテストコードのメンテナンスコストも発生するのであまりコスパが良いとは思えなかった。
もちろん、テストコードを書かないと結合可能になるまでテストできないことも、細かい単位で分けた方がバグの原因特定がし易いことも知ってはいるが、そのテストコードを長期的に維持する必要があるかは些か疑問だった。
しかし、自社開発の会社へ転職してアジャイル開発

元記事を表示

ABC323A~Fの解答[Java]

## はじめに
今回はFまでコンテスト中に解けたのでそれを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc323/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。

## A – Weak Beats
問題文は[こちら](https://atcoder.jp/contests/abc323/tasks/abc323_a)

愚直に調べました。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimpleWriter out = new SimpleWriter( System.out, aut

元記事を表示

Javaで「キーボードから入力された値を取得する」の動作を確認してみた

# 概要

Javaで「キーボードから入力された値を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index1.html

# 実装

以下のファイルを作成しました。
“`JSample1_4.java
import java.util.Scanner;

class JSample1_4{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

System.out.println(“趣味を入力してください。”);

String hobby = scanner.nextLine();
String[] tokens = hobby.split(“\\s+”);
for (int i = 0 ; i < tokens.length; i++){ System.out.println("[" + i + "]" + to

元記事を表示

【実務未経験】入社5ヵ月でJavaSilverSE11合格した話

# はじめに
先日Java Silver SE11を受験し、無事合格することができました!(正答率82%)
今後、受験する方に少しでも役に立てればと思い、備忘録も兼ねて書きます。

# 合格するための結論(お急ぎの方向け)
筆者のことなんて興味ねえ!早く受かる秘訣を教えてくれ!という方へ・・・
JavaSilverに受かる方法は・・・

**黒本を85%以上取れるまでやり込むことです**

そして、右上の×ボタンを押して、PCを閉じて、「黒本、大事オブ大事」「黒本、大事オブ大事」「黒本、大事オブ大事」と唱えながら、近くの書店で黒本を購入して、黒本をやり込んでください!
合格を祈っています!

受験まで時間に余裕がありますという方は、そのままお読みください。

# 受験した目的
・未経験からエンジニアに転職し、IT関係の資格が何もなく、現場配属前に何らかの資格を取って、スキルを証明したいなと思ったから。
・会社の資格支援制度があり、合格すれば受験料が支給されるため。

# 学習開始時の筆者の状態
業界未経験からエンジニアになって3か

元記事を表示

Javaの型について

## はじめに
Javaの記事は普段書かないのですが、会社のメンバー育成用に簡単にまとめていたので、せっかくなので記事として共有させていただこうと思います。
あくまで概略的な説明です。

## プリミティブ型
値を保持するのみの型
メソッドはないです
メモリ上に直接その値が保持されます(ByValue:値渡し)
継承はできません
“`
int i = 10;
i.toString(); というものはない
“`

## オブジェクト型
java.lang.Objectを継承したクラス
メモリ上に直接その値が保持されるのではなく、値を保持したメモリアドレスへの参照値が格納されます(ByReference:参照渡し)
ただ他の言語とちょっと違いJavaは参照渡しではなく参照の値渡しと呼ばれるややこしい動作をします
そのためあまり複雑に考えると訳が分からなくなるので注意

“`java
/**
* intはプリミティブ型ですが
* Stringはオブジェクト型です
* ここをしっかりと分かっていれば大丈夫!!
*/
public class StringSamples {

元記事を表示

GradleビルドコマンドでJavaプロジェクトのビルドを効率化しよう

GradleはJavaおよび他の多くのプログラミング言語のプロジェクトのビルド、テスト、デプロイメントを自動化するためのパワフルなビルドツールです。この記事では、Gradleの主要なビルドコマンドについて解説します。

## 目次
1. [assemble](#assemble)
2. [bootBuildImage](#bootBuildImage)
3. [bootBuildInfo](#bootBuildInfo)
4. [bootjar](#bootjar)
5. [bootJarMainClassName](#bootJarMainClassName)
6. [bootRunMainClassName](#bootRunMainClassName)
7. [build](#build)
8. [buildDependents](#buildDependents)
9. [buildNeeded](#buildNeeded)
10. [classes](#classes)
11. [clean](#clean)
12. [jar](#jar)
13. [testClasses]

元記事を表示

EclipseのMavenプロジェクトで、Javaのバージョンを設定したい

EclipseのMavenプロジェクトを新規作成すると、Javaのバージョンが5になっています。これを任意のバージョンに設定するにはどうすればよいでしょうか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105859/48539341-0930-2eab-86ff-59f8906da4d2.png)

① pom.xmlのmaven.compiler.sourceとmaven.compiler.sourceを設定します (以下はJava17を指定する例)

“`xml:pom.xml 17
17 UTF-8

元記事を表示

【make it easy】efwのwebアプリのログイン制御&権限制御

# はじまり
webアプリに、ログイン有無とユーザ権限で画面操作可否を制御するのはよくあります。社内のwebアプリの場合、ユーザはよい人ばかりですから、制御の厳密さにあまり気にしなくてよいですが、社外向けあるいはインタネット向けの場合、気を付けたほうがいいです。権限なしのweb画面をURL欄で直接打ち込むこと、または権限なしのイベントをデベロッパーツールで直接呼び出すことなど、軽いハッキングのリスクはインタネットにいつも存在しています。

efwは、プロパティ設定の方式で、上記リスクを防ぐこと実現しております。今回の記事をこれを紹介させていただきます。

# スケールトンサンプル
スケールトンサンプルは、ログイン画面・メニュー画面・マスタ管理画面で構成します。マスタ管理画面は、ログインユーザの権限により操作可否を制御したいです。

## 画面イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/8c4522a5-6725-3670-8b16-3235f4986dc2.p

元記事を表示

OTHERカテゴリの最新記事