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

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

(solved) Maven: CompilationFailureException: Compilation failure

`JAVA_HOME` が設定されていなかったというありがちなやつだったのですが、次に同じことが起こったときに手間取らないように覚書。

# 状況

対象: [Apache PDFBox](https://pdfbox.apache.org/)([GitHub mirror](https://github.com/apache/pdfbox)) 2.0.21

README にしたがって `mvn clean install` を実行するとコンパイルで失敗する。

スタックトレース:

“`
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project fontbox: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apach

元記事を表示

Domaを書く時に用意する最低限3ファイルの具体例

# Domaでデータアクセスするのに必要なのは以下の3ファイル

1. エンティティ
2. Daoインターフェース
3. SQLテンプレート

##1. エンティティ(User.java)
データベースのデータ本体を表すクラス

“`Java:User.java
@Table(name = “users”)
@Entity
@Getter
@Setter
public class User extends DomaDtoImopl{
private static final long serialVersionUID = 123456789123456L

@OriginalStates
User originalstates;

@Id
@Column(name =”user_id”)
@GenerateValue(strategy = GenerationType.IDENTITY)
Long id;
String password;
String firstName;
String lastName;
}

元記事を表示

Java × GoogleCalendarAPI でタスク管理アプリ

#はじめに
ポートフォリオとして制作したアプリケーションのポイントを投稿させていただきます。
ポートフォリオURL:https://task-time.net
(まだGoogleCloudPlatformの審査中のため、ログインページから先は進めません。)
GitHub:https://github.com/Nakamura9310/TaskTime

#アプリケーションのコンセプト
### 「①全タスクをメモし②所要時間を見積もり③全てカレンダーに入れる」ことで
###多忙な時に真価を発揮する、タイムマネジメントアプリ

前職時に本当に多忙な毎日を送る中で、タイムマネジメントの重要性を知りました。
タスクをメモするだけではダメです。
どのタスクに何時間かける予定か、カレンダーに落とし込むことができていれば、
タイムマネジメントができているといえます。

_①〜③ができていると_
_→新しいタスクが発生した時に、いつ実行可能なのか瞬時に判断できる。_

_①〜③ができていないと…_

_▲下手にタスクを受け、期限内に終わらない量のタスクを抱えることになる。_
_→一人でタスクを抱え込み

元記事を表示

IBM Semeru Runtimes 無償で利用できる新しいJava実行環境

OpenでFreeなJava実行環境を提供してきたOpenJDKのディストリビューション[AdoptOpenJDK](https://adoptopenjdk.net/)は,2021年7月末で更新を終了しました。8月以降は[Eclipse Adoptiumプロジェクト](https://adoptium.net/)および[IBM Developerサイト](https://developer.ibm.com/languages/java/semeru-runtimes/)から配布が継続されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60041/791317d7-34c2-51cd-24c7-9caf2e0f90f4.png)

AdoptOpenJDKでは,OpenJDKの標準のJVMであるHotSpot VMを含んだものの他に,もう一つのJVMであるOpenJ9を含んだディストリビューションも配布していました。HotSpot VMは,もともとSun Microsystemsが

元記事を表示

enum class の使用例

## はじめに
今まで enum はただ定数を保管しておくためのクラスだと思っていたが、業務の中で自分が知らなかった方法で enum を使用していたし、便利だなと思ったのでメモとして残す。

Java Silver の試験には出てこなかった。

## enum class

(1) enum でもコンストラクタの定義ができる。
・ ここでは引数で受け取った名前と血液型を決定

(2) メソッド `getPesonInfo` で `PesonInfo` を初期化して返す。
・ この enum クラスにセットされた名前と血液型を使用して初期化した`PesonInfo`を返す。

“`java
package enumTest;

public enum Persons {
// (3)
TARO(“田中太郎”,”AB型”),
YUKA(“佐々木優花”, “O型”);

// (1)
Persons(String name, String bloodType){
this.name = name;
this.blood

元記事を表示

【Java】【Ruby】配列内の偶数を数える

 とても簡単ですが、RubyとJavaで、配列内の偶数を数えるプログラムを作りました。「配列を引数として渡すにはどうしたら良いのだろう」という疑問からひとまず作ったものです。

## Ruby

“`ruby
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end

count_evens([2, 1, 7, 8, 2, 3, 4])
count_evens([2, 2, 6, 5, 0])
count_evens([1, 3, 11, 5])
“`

## Java

– メソッドを定義したクラス

“`java
package example;

public class CountNums {
void countEvens(int[] nums) {
int count = 0;
for(int num : nums) {
if (num % 2 == 0) {

元記事を表示

デザインパターン 一言で表現してみた ~GoF本輪読会まとめ~

初投稿です

#はじめに
以前から、[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88-Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9-ebook/dp/B00I8ATHGW/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Java+%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&qid=1629379519&sr=8-1)の輪読会を実施していましたが、最近完遂すること

元記事を表示

Fn (OCI Functions) の Function を FDK を使わずに作成する

# はじめに

掲題に関するコードをGitHubに公開していますが、そもそも素直にFDKを使っておけばいいのに、何でこんな一見無駄に思えることをやってみたのかという動機から、実際にやってみて分かった Fn コンテナの通信の仕組みなどについて、諸々お話をしたいと思います。

https://github.com/tkote/fn-netty

https://github.com/tkote/fn-fastapi

# 動機

Fn には各種言語用の FDK (Function Development Kit) があって、これを使えばあまり難しいことを考える必要もなく、シンプルに入力を受け取って処理をして出力を返すことだけを実装すれば済みます。単純な処理であれば実際 FDK だけで十分でしょう。
しかしなから逆に、何で実装が FDK に縛られないといけないのかという疑問の方が強くなってきました。世の中には様々な言語の優れたフレームワークがあるので、それを流用できた方がいいことが多くあるのではないか? 例えば (Javaの例ですいません…) JAX-RS 準拠のフレームワークで F

元記事を表示

Javaのlibrosa的ライブラリjlibrosaをandroid sturioで使う

最近アンドロイドアプリを作ろうとしているので備忘録

#Javaでサクッと音の特徴量求めたいけどどうしよう
pythonだったらLibrosaに頼るところですが、Javaにも似たようなライブラリがないか探してみたところありました!
その名も[jlibrosa](https://github.com/Subtitle-Synchronizer/jlibrosa)!!!
Java版Librosa作ろうぜ、みたいなところがモチベーションで開発されているようです。
androidでどうやって使うかも、[神記事](https://heartbeat.fritz.ai/a-definitive-guide-for-audio-processing-in-android-with-tensorflow-lite-models-d90de896f0c4)にちょいと書かれており、非常に助かりました。
ただライブラリのインストールのところでちょっと躓いたので記事に残しておきます。

#jlibrosaをandroid studioにライブラリとしてインポートする手順
1. githubからjlibrosa

元記事を表示

Spring MVCで、Filterでリクエストボディとレスポンスボディをログ出力するときの落とし穴と対策

# やりたいこと
リクエストボディとレスポンスボディの内容を、Filterでログ出力したい。

“`bash:ログ出力例
… リクエストボディ = param1=value1&param2=value2
… レスポンスボディ = This is reponse body
“`

> 本来は秘匿情報のマスクなどが必要になりますが、この記事ではその説明を省いています。

# 問題
`HttpServletRequest` や `HttpServletResponse` には、ボディを `String` で取得するようなメソッドは存在しません。前者には `getInputStream()` 、後者には `getOutputStream()` というメソッドがあり、これを使えばボディを取得することはできます( `String` にするにはゴニョゴニョ処理が必要なのですが)。

しかし、 `getXxxStream()` メソッドを使ってしまうとボディが消費されてしまい、その後はボディが取得できなくなってしまいます。

なので `HttpServletRequestWrapper`

元記事を表示

paizaテスト環境(Java編)

paiza( https://paiza.jp/ )で問題を解いていると、「自分の好きな値で試したい」となるときがありませんか?
そんな時にはpaiza.IOがあるじゃないか、と言われるかもしれませんが、自分の開発環境で作ってる場合修正の度いったりきたりで煩わしいと思います(思いました)。
そこで私は自分のローカル環境でテキストファイルを標準入力にもってきて、対象ファイル(クラス)のmainメソッドを呼び出す、簡単な処理を一つ作りました。

それがこれです↓

“`java

package skillCheck;

import java.io.FileInputStream;
import java.io.InputStream;

import skillCheck.rankS.S002;

public class CallMethod {

public static void main(String[] args) throws Exception {

InputStream fileStream = new FileInputStream(

元記事を表示

Java 11 (OpenJDK: Eclipse Temurin) を Homebrew で macOS にインストールする

## 概要

– AdoptOpenJDK の後継である Eclipse Temurin を Homebrew で macOS にインストールする。

[Good\-bye AdoptOpenJDK\. Hello Adoptium\! \| AdoptOpenJDK Blog](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/)

> The move from AdoptOpenJDK to Eclipse Adoptium is now complete. The same great community that brought you high quality Java binaries for the last four years at AdoptOpenJDK is now fully productive at Adoptium.

[Adoptium Celebrates First Release \| Adoptium Blog](https://blog.ado

元記事を表示

SpringBootアプリをService(デーモン)として起動する方法

# はじめに
SpringBootアプリは「java -jar」コマンドで実行できますが、ログアウトするとアプリが停止します。
起動し続けるためにはサービスとして起動させる必要があります。
今回はSpringBootアプリケーションをService(デーモン)として起動する手順を記載します。
※デーモンとは常駐プログラムのUNIX系OSにおける呼び名です。

# 環境
OS:CentOS7

# 手順
1. Fully Executable Jarの作成
2. confファイルの作成
3. Service(デーモン)の登録
4. Service(デーモン)の自動起動設定

# 1. Fully Executable Jarの作成
SpringBootアプリを常駐させるために通常のjarファイルは起動スクリプトを書く必要があるが、
Fully Executable Jarは起動スクリプトが組み込まれています。

作成方法は、pom.xmlに次のようなのタグを追加します。

“`xml:pom.xml

元記事を表示

Eclipse 2021-06(4.20.0)でlombok 1.18.20適用時のエラー

# 環境
* java version “16” 2021-03-16

# 現象と対処方法
以下のエラーが発生してjavaのエディタが開けなくなる。

“`java
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang” to unnamed module @2b8bb184
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.Access

元記事を表示

SpringBootアプリケーション(Jar)をCentOS7にデプロイ

# はじめに
SpringBootは実行可能ファイルとして jar 形式と war 形式の2種類のファイルを作成できます。
jar 形式はTomcatが組み込まれており、単体で実行可能です。
war 形式はTomcatがインストールされた環境にデプロイし、実行する必要があります。
今回はjarファイルをCentOS7にデプロイする手順を記載します。

# 前提

### 開発環境
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

### サーバー環境
OS:CentOS7(仮想マシン)
Java:11
Apache:2.4.6

# Jarファイル作成
プロジェクト上で右クリック > [実行] > [Maven install] を選択します。
完了後、[プロジェクトフォルダ] > [target]に「XXX.jar」ファイルが作成されます。
※ここではプロジェクト名「demo」のjarファイル作成
![jar作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798

元記事を表示

SpringBootでHello World プロジェクト作成~実行

# はじめに
SpringBoot + Thymeleaf + Mavenで「Hello World」を表示させる手順を記載します。

# 開発環境
OS:windows10
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

# 手順
「Hello World」を表示させるまでの手順は下記です。
1. プロジェクトの作成
2. pom.xmlの編集
3. 画面の作成
4. Controllerの作成
5. 実行

# 1. プロジェクト作成
eclipseを起動します。
eclipseの[ファイル]→[新規]→[プロジェクト]を選択します。
![プロジェクト選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798422/7f9d50b7-2165-81b4-263f-f07224f2c729.png)
「Spring スターター・プロジェクト」を選択し、「次へ」ボタンを押下します。
![Springスタータープロジェクト選択.png](https://qiita-i

元記事を表示

Javaで単語学習アプリを作ろう

こんにちは。プログラミングを勉強していると、一刻も早く単語学習アプリを作りたくなりますよね。え、ならないんですか???

単語学習アプリを作ってみたい同志たちの願いを叶えるべく、今回はJavaで、フラッシュカード式の単語学習ができる機能を作ってみました。アプリというほど整った形ではありませんが、ひとまずコンソールで使えるレベルになりました。

例によって、正しく動きはするものの最適な書き方であるか自信がない部分もありますので、何かお気づきになりましたらご指摘いただければと思います。

今回扱う項目は以下です。

– tsvファイルを作り、ソースコードで内容を読み込む。
– 読み込んだ情報をもとに、ランダムで単語を表示させる。

前提条件

– IntelliJ IDEA: 2021.1.2 (Community Edition)
– JDK:16.0.1
– MacOS:Version 11.1

## 1.今回やることの整理

今回は以下のような要件を満たした機能を作ります。

– 起動すると、日→英か英→日どちらかの学習モードを選べる
– スタートすると無作為に選ばれた単語が表示

元記事を表示

[Java]  エクセルで数式を追加・読み取る

Excelで、セルに数式や関数を入力して計算などの作業を自動的に行わせることができます。数式や関数を使いこなせれば、Excelでの文書作成がぐっと楽になると思いますので、今回は、free Spire.XLS for Javaという無料のライブラリを活用して、Excelで数式を追加・読み取る方法を紹介していきます。

下準備

1.E-iceblueの公式サイトからFree Spire. XLS for Java無料版をダウンロードしてください。

f:id:lendoris:202108181216</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>数式</div>
<div class='tag-cloud-link'>エクセル</div>
<div class='tag-cloud-link'>追加</div>
<div class='tag-cloud-link'>読み取る</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/ddb74e05c65004624b42'>元記事を表示</a></div>
<h3 id=Thymeleafの日付比較

#Thymeleafの日付比較が賢い!
と感動したので、簡潔ですが投稿させていただきます。

#コード例
ControllerからModelに値を渡し、Thymeleafで表示する例です。

“`java:○○Controller.java

@GetMapping(“/index”)
public String index(Model model) {
model.addattribute(“today”, “2021-8-18”);
model.addattribute(“tomorrow”, “2021-8-19”);
return “index.html”;


“`

“`html:index.html

falseなので表示されない
trueなので表示される


“`
比較演算子で「>」とか使いたくなりますが、
Thymeleafでは以下のように書き換える必要があります。

元記事を表示

Java入門[インターフェース]

前回は抽象クラスについてまとめました。

https://qiita.com/tomorun/items/8c210446b586d343ef53

階層の上には`Human`クラス
その下には具体化された`Teacher`や`Engineer`、`Unployed`などが生まれました。

しかし、`Human`クラスを更に抽象化することもできますね。
どんどん抽象化していくことで、抽象クラスのフィールドやメソッドが減っていきます。

抽象クラスの中でも、更に抽象化されたクラスを`インターフェース`として特別に扱うことが可能になります。

`インターフェース`の条件は以下の2つ
1 すべてのメソッドは抽象メソッドであること
2 基本的にフィールドを1つも持たない

では、作成してみましょう。

`アクセス修飾子 interface クラス名`

“`java:Animal.java
public interface Animal{
// public abstract void run();
// public abstract void eat();
// public

元記事を表示

OTHERカテゴリの最新記事