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

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

[java tips] lombok @Builderを使ったクラスでもjson fixtureを使いたい

# 前提

* Java
* Spring boot
* Jacksonを利用してobject <-> json変換
* junitで単体テストを書く
* lombokを利用している

# 概要

Javaでunittestを書くとき、テストで使うデータを用意するのはわりとめんどくさい。

“`java
var hoge = new Hoge(“hogeId”, “hogeName”, new Fuga(“fugaId”, “fugaName”, …));
““

というわけで、一般的には外部にjsonファイルを用意し、これを読み込ませてテストに使う。

* hoge.json

“`json
{
“id”: “hogeId”,
“name”: “hogeName”,
“fuga”: {
“id”: “fugaId”,
“name”: “fugaName”,

}
}
“`

しかし、一部のオブジェクト(たとえばドメインモデル)は「不変オブジェクト(immutable object)」にしないといけない。そ

元記事を表示

Java初心者が簡単な性格診断アプリを作る

#はじめに

職業訓練校5か月目、授業内容はC言語を使った組み込みから、Java言語での開発に移り変わりました。
今回は授業で制作した性格診断アプリを紹介していきます。

なお、作成するにあたってこちらのサイト様を参考にさせて頂きました。
[チェックボックスのチェック状態を設定, 取得する](https://seesaawiki.jp/w/moonlight_aska/d/%A5%C1%A5%A7%A5%C3%A5%AF%A5%DC%A5%C3%A5%AF%A5%B9%A4%CE%A5%C1%A5%A7%A5%C3%A5%AF%BE%F5%C2%D6%A4%F2%C0%DF%C4%EA%2C%20%BC%E8%C6%C0%A4%B9%A4%EB)

完成品がこちら

元記事を表示

Java – How to Set Difference Configuration Files for Log4j2

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;

“`java
if (env.equals(“DEV”)) {
setLog4j2ConfigFile(“log4j2-dev.xml”);
}

private void setLog4j2ConfigFile(String log4j2ConfigFile) throws URISyntaxException {
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.setConfigLocation(getClass().getResource(log4j2ConfigFile).toURI());
}
“`

https://stackoverflow.com/questions/23200891/how-to-use-multiple-configurati

元記事を表示

SpringBootの始め方

# はじめに
普段Javaのエンジニアですが、らしいことを全然かけてないなと思い。SpringBootでAPIを作るまでの簡単な流れを記事にしてみようと思いました。
やり方はこの方法でなくてもあると思いますので一例としてみていただければと思います。

# 前提
eclipseはすでに持っていることを前提としているため必要な方はeclipseを取得してから後続の作業を行ってください。
https://mergedoc.osdn.jp/

# spring initializr
以下のリンクからspring initializrを開いて諸々記載が終わったら「GENERATE」ボタンを押してください。
https://start.spring.io/

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524088/4df83b69-e331-722a-b2b4-8cd02f655b55.png)

特に何を作るという目的もないので、buildツールをGradleにだけ変えています。
パッケ

元記事を表示

Couchbase Lite機能解説:クエリ① 概要、インデックス、SELECT句

## 概要

Couchbase Liteは、例1に示されている形式のクエリを使用します。

例1.クエリ形式

“`sql
SELECT ____
FROM ‘database’
WHERE ____,
JOIN ____
GROUP BY ____
ORDER BY ____
“`

SQL経験者には不要でしょうが、それぞれのキーワードの解説は以下の通りです。

– `SELEC`Tステートメントが結果セットに返されるドキュメントプロパティを指定します
– `FROM`は、ドキュメントを照会するデータベースを指定します
– `WHERE`ステートメントはクエリ基準を指定します。
– クエリ基準に一致するドキュメントの `SELECT`されたプロパティが結果セットに返されます
– `JOIN`ステートメントは、複数のドキュメントを結合するための基準を指定します
– `GROUP BY`ステートメントは、結果セット内の返されたアイテムをグループ化するために使用される基準を指定します
– `ORDER BY`ステートメントは、結果セット内のアイテムの順序付けに使用される基

元記事を表示

【SpringBoot】NamedParameterJdbcTemplateで実行されるSQL文をログ出力する

## 備考(※読み飛ばし推奨)

– 業務で役立ったので備忘録として残すことにした。
– [log4jdbc](https://github.com/arthurblake/log4jdbc)で実装すべきだが、Gradle(Maven)を書き換えるのが面倒な人向け。
– NamedParameterではないJdbcTemplate使用時は`String.replaceFirst`で`?`を置換すればいけそうな気がするが、パラメータの順番担保はどうなるのか未確認。[log4jdbc](https://github.com/arthurblake/log4jdbc)を使うべき。

## サンプルコード

“`Java
package sample.repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repositor

元記事を表示

try-with-resources文の書き方

#動機
try-with-resourcesがイマイチ使いこなせていない。
Java7で導入され、Java9で一部仕様変更があった。
この際、しっかりと使いこなせるように整理したい。

#参考にした資料
The Java® Language Specification
Java SE 11 Edition

#検索キーワード
java spec

#構文規則

“`x:
TryWithResourcesStatement:
try ResourceSpecification Block [Catches] [Finally]

ResourceSpecification:
( ResourceList [;] )

ResourceList:
Resource {; Resource}

Resource:
{VariableModifier} LocalVariableType Identifier = Expression
VariableAccess

VariableAccess:
ExpressionName
FieldAccess
“`

“`x:
VariableM

元記事を表示

ifLinkにサイコロIMSが新たに追加になりました。

#はじめに
ifLinkマイクロサービスを開発している八教と申します。

新たに3つのサイコロ出目及び出目の合計を取得し、ifLinkに通知するIMSが追加されましたので、
紹介させていただきます。

#ifLinkとは
https://iflink.jp/

#サイコロIMSとは
3つのサイコロの出目、または出目の合計をifLinkのIFとして設定できます。
例えばIF条件をサイコロ出目の10以上とし、サイコロを振って10以上が出た場合に「あたり!」をトーストメッセージIMSで表示できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1780474/2172fb35-9f3f-ce00-fe3e-ca9c86458260.png)

#サイコロで遊ぶまで
サイコロで遊ぶまでに以下の準備が必要です。
1.IAIIMSをインストールする
  IAIIMSはサイコロIMSとifLinkをつなげる為に必要です。
  以下リンクよりインストールしてください。
  https://dev.i

元記事を表示

【mac OS】Big Surに変更したら注意すること

cordova でAndroid Studioのエミュレーター動かない問題

macでOSをBig Surに変更後、Android Studioのエミュレータを起動して、cordovaと連携してアプリ開発をする場合は注意が必要です。

“`
% cordova run android
“`

をターミナルで実行すると、

`Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.`

というエラーが表示されます。
下記のStackoverflowで記載されているようにSDK versionを変更しても、新たにエラーが生じてしまいます。

https://stackoverflow.com/questions/68387270/android-studio-error-installed-build-tools-revision-31-0-0-is-corrupted

新たなエラーは下記の通りです。

元記事を表示

The forked VM terminated without saying properly goodbyeした時の対処方法

### 事象
mvn testでJUnitテスト実行失敗。下記のエラーログがでた。

> The forked VM terminated without saying properly goodbye. VM crash or System.exit called

#### “forked”とは?

「フォークする」= テストするためにJVM内にプロセスを生成すること

mavenでJUnitテスト実行するときには「maven-surefire-plugin」というプラグイン経由で実行する(のが普通だと思ってる)のだが、テスト用に生成するプロセス数は↓のようにforkCountで制御できる。

“`
例) フォークする最大プロセス数を「3」に設定する  org.apache.maven.plugins
 maven-surefire-plugin
 
  3
  -Xmx1024m

元記事を表示

Javaのクラス継承

Javaのクラス継承の検証をしました

“`java
class Kotehan1 {
void kotehan(String t) {
System.out.println(t);
}

}
//Kotehan1クラスを継承してAlparajyu1クラスを作成する
class Alparajyu1 extends Kotehan1 {
private String kotehan_name;
void kotehan(String t) {
this.kotehan_name = t;
System.out.println(this.kotehan_name);
}
String getkotehan() {
//System.out.println(this.kotehan_name);
return this.kotehan_name;
}
}

public class Alpa15 {
public static void main(String[] name) {
// Kotehan1インスタンスを呼び出す
Kotehan1

元記事を表示

今日のQuizKnockの動画の同じ文字がそろうと消える問題文作成プログラムをJavaで組んでみた。

プログラミング歴2か月弱です。
QuizKnockでこんな動画を見つけて、いい練習になると思い組んでみました。

“`Java
import java.util.ArrayList;

class eraseDuplicates {
public static void main(String args[]) {
tryWith(“あんぱんまんのあんはつぶあん、こしあんのどちら?”);
tryWith(“しんせんえんさつのしょうぞうはだれ?”);
tryWith(“99さいのおいわいをあるいろを

元記事を表示

Spring Boot 2.5でdata.sqlを使ってデータ初期化を行う際の注意点

# 前提
先日、以下を使って簡単なアプリを作ろうとしました。

– Spring Boot 2.5
– JPA
– H2 Database
– data.sql

“`java:Item.java
package com.example.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstruct

元記事を表示

FileMaker ServerからJDBCでいろいろアクセスしてみる

[前回](https://qiita.com/megasys1968/items/25199d419a2274faace5)の記事を書いた以降に、わかったことを書きます。
なお、今回は可能ならSpringのJDBC Template、必要に応じて生のJDBCを、JDBCドライバも前回拡張したものではなく素のドライバを使用します。

## オブジェクトフィールドの読み書き

前回の調査で漏れてましたがオブジェクトフィールドを実際に読み書きしてみたら、うまく行かず諦めてました。

* JDBCドライバのPreparedStatementのgetBlob/setBlob等のメソッドを呼び出すと例外が発生し、”This method is not yet implemented.”と言われる。
* [ODBCとJDBCガイド](https://fmhelp.filemaker.com/docs/edition/ja/fm_odbc_jdbc_guide.pdf)に「CLOB、ARRAY および REF データ型を含む列の更新」は「FileMaker でサポートされません。」との記述を見て「でき

元記事を表示

Spring BootとApacheをAJPで接続する(secretRequired対応版)

ちょっと古いサイトを見て設定したらTomcatを9.0.34で追加されたSecretに
手順が対応していなくて起動しなかったのでメモ。

“`
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired=”true” but the secret attribute is either null or “”. This combination is not valid.
“`

secretRequiredはデフォルトtrueになっているが、今回Apacheとはlocalhost通信するので`setSecretRequired(false)`してsecretを使わない設定に変えると起動するようになる。

“`java
@Bean
public WebServerFactoryCustomizer servletContainer() {
Connector connector

元記事を表示

MacOSのProcessingでP3Dを使いたい!

# きっかけ
Processingで、以下のように書いた

“`java
void setup() {
size(600, 600, P3D);
}

void draw() {
background(255, 0, 0);
}
“`

そしたら、こんな感じの謎のwarningを吐かれ、正常に動作しなかった
(ちなみに自分のwarningメッセージをメモしてなかったので、同じ状況である他の人のメッセージを拝借した)

“`
WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the future. Called from (
0 AppKit 0x00007fff3105d2e3 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisab

元記事を表示

Java PDFでビューアプレファレンス(ViewerPreference)の設定

はじめに

ビューアプレファレンスとは、利用者がPDFファイルを閲覧する時に、自分の好みによって画面をどう表示させるかについては、様々なビューア表示設定できる機能です。例えば、タイトルを非表示にしたり、ウィンドウに合わせたりすることで、気持ちがよくなるでしょう。さあ、今回はSpire.PDF for Javaを利用してPDFでビューア表示設定を紹介していきたいと思います。

Spire.PDF for Javaとは?

Spire.PDF for Javaは、開発者がJavaプラットホームでPDFの文書ファイルを迅速かつ高品質でmodule-info.javaの書き方

#module-info.javaの書き方

##問題点と解決策
モジュールの名前に、パッケージと同じ(またはほぼ同じ)名前を付けた例が散見された。
間違いではないが非常に紛らわしく混乱した。
どこにどのレベルの名称を書くのか、構文レベルで事前把握しておくが吉。

“`x:ModuleDeclaration
{Annotation} [open] module Identifier {. Identifier} { {ModuleDirective} }
“`

“`x:ModuleDirective
requires {RequiresModifier} ModuleName ;
exports PackageName [to ModuleName {, ModuleName}] ;
opens PackageName [to ModuleName {, ModuleName}] ;
uses TypeName ;
provides TypeName with TypeName {, TypeName} ;
“`

“`x:RequiresModifier
(one of)

元記事を表示

Java 概要

#学習の目標
プログラミング言語のJavaの学習をします。学習の備忘録としてQiitaを使ってアウトプットしていきます。
まず、Javaの概要を学習します。

#目次
* Javaとは
* Javaの特長
* Javaの種類

#Javaとは
Javaとは、1995年に米国のサンマイクロシステムズ社(現オラクル社)がC++をベースとして開発したプラットフォーム非依存のオブジェクト指向のプログラミング言語です。
Javaは、プログラミン言語ランキングで常に上位になっているプログラミング言語で、多くの有名企業がJavaを利用したWebアプリケーションを構築しています。

#Javaの特長
プログラミング言語としてのJavaの特長を3つ説明します。

###コンパイル言語
プログラミング言語は大きく__「コンパイル言語」「スクリプト言語」__の2つに分類されます。
コンパイル言語は、予めコンパイラによってコンパイル(人間が描いたソースコードを機会が読み取ることができるように変換する作業)を行ってからプログラムを実行するものです。
それに対し、スクリプト言語は、事前にコンパイルしておくのではな

元記事を表示

Java Excel文書に画像を挿入・抽出

はじめに

Excelに画像や図形を挿入することで、エクセル文書をよりビジュアル化させることができます。今回はSpire.XLS for Javaを活用してExcel文書に画像を挿入・抽出する方法を紹介しています。この記事の案内を通して、少しでもお役に立てたのであればと思いますね。閑話休題、始めましょう!

Spire.XLS for Javaとは?

Spire.XLS for Javaは、開発者がJavaプラットホームでExcelの文書ファイルを迅速かつ高品質で

  • OTHERカテゴリの最新記事