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

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

VSCodeのMetalsプラグインでScala(sbt)環境をIDEっぽくする

# やること

– Scala用のビルドツールsbtを入れる
– VSCodeでIDEっぽくするためにMetalsプラグインを入れる

# あらかじめ用意するもの

– JDK (versionは8か11が推奨)
– Scala
– VSCode

# sbtの導入

### [sbt](https://www.scala-sbt.org/)とは

Scala用のコマンドラインビルドツールです。一応、GradleやMavenでもScalaのコンパイルを行うプラグインは提供されていますが、sbtはLightbend社(Scalaを提供している会社)に所属するエンジニアがScalaコアチームと連携しながら精力的に開発しているツールらしいです。

### インストール

[こちらの公式DLサイト](https://www.scala-sbt.org/download.html)からダウンロードできます。

– Windowsでインストール
上記のDLサイトにzip、tgz、msiインストーラが置いてあります。

– MacOSでインストール
Homebrewを使って`brew in

元記事を表示

SpringBoot(gradle)にOpenAPI(Swagger)の導入をしていろいろ設定してみた

## はじめに
昨年[精算くんという個人開発のアプリケーション](https://seisan-kun.netlify.app/#/)を作成したのですが、バックエンドAPIの仕様書を作成していなかったので、手っ取り早くOpenAPI(Swagger)を利用して作成していこうと思い利用するに至りました。
その際の導入方法や、個人的に気になった設定について触れていきます。

## 環境
– Java 11.0.3 (Amazon Corretto)
– gradle 6.0.1
– SpringBoot 2.2.3
– Seisankun-api https://github.com/nooboolean/seisankun_api
– SwaggerUI 2.9.2

## OpenAPI(Swagger)とは
>The OpenAPI Specification, originally known as the Swagger Specification, is a specification for machine-readable interface files for

元記事を表示

【Java】フォルダ内のファイルパスをListで取得

引数のフォルダ内にあるファイルの一覧をStringのListにしてみるメソッド。
※再帰的に呼び出してListにaddAllしてみた
※Java8~15で動作検証済み(不具合あっても責任は取らない方向で

“`java:FileUtils

import java.io.File;
import java.util.LinkedList;
import java.util.List;

public class FileUtils {

/**
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
public static List getFileList(String root) {
return getFileList(new File(root));
}

/**
*
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
publ

元記事を表示

Spring Boot + Java でfileとStringデータを同時にform送信して処理する

File型とString型を一度にForm送信するやり方がわかったので備忘録として残しておきます。

##実現したいことのイメージ
こんな感じのフォームがあり、送信ボタンをクリックすると更新した情報にページが更新されてアラートが表示される

![スクリーンショット 2021-01-01 19.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/8e781aa8-f0a9-18c2-642c-d43de7f66607.png)
![スクリーンショット 2021-01-01 19.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/ca0d50a1-2cfd-56cc-95d9-98c1a06743ab.png)

“`html

【Java】for文についてまとめ

#はじめに

現在Java Silver受験に向けて勉強中です。
勉強の中で、for文について間違えて覚えていたり混乱することが多かったので、自分の言葉で基本からまとめていこうと思います。

#基本
for (初期化文; 条件文; 更新文) {
  /// 繰り返し処理
}

“`
for(int i = 0; i < 10; i++) { System.out.println(i); } ``` ①初期化文 ②条件文 ③繰り返し処理 ④更新文 ⑤終了 ※②~④を繰り返す #拡張for文 for (型 変数名 : 集合) {   /// 繰り返し処理 } ※ ;(セミコロン)ではなく:(コロン)であることに注意 ``` int[] array = {1, 2, 3} for(int num : array) { System.out.println(num); } ``` 集合の中身を最初から最後まで一つずつ取り出すイメージ。 #繰り返し処理の中断 ##break 例: for (初期化文; 条件文; 更新文) {   if (条件文) {     break

元記事を表示

【Java】Optionalの使い方

#プログラミング勉強日記
2020年1月1日
JavaのOptionalの使い方について簡単にまとめる。

#Optionalとは
 メソッドの戻り値としてnullを返す可能性があることを明示的に示したいときに使う。メソッドがnullを返す可能性があるということを示すことで、より安全に実装することができる。

#Optionalの書き方
 Optionalクラスを使うにはjava.util.Optionalをインポートする必要がある。一般的にはオブジェクトを定義して利用する。Optionalのオブジェクトはダイヤモンド演算子(‘<>‘)ないのType Parameterにnullの可能性があるオブジェクトの型を指定して宣言する。
 ofNullableメソッドの引数にはnullの可能性があるオブジェクト名を指定する。

“`java:基本的な書き方
Optional オブジェクト名 = Optional.ofNullable(nullの可能性があるオブジェクト名);
“`

“`java:サンプルコード
String str = null;
Optional

元記事を表示

(Java、JavaScript、Python)文字列処理の比較

# Java、JavaScript、Pythonの処理比較

最近JavaScriptとPythonの勉強を始めました。
学んだことの整理として、Java、JavaScript、Pythonの3言語の処理比較を記事にしていこうと思います。
今回は文字列処理です。

## 文字列処理の比較一覧

|処理内容|Java|JavaScript|Python|
|—|—|—|—|
|文字列長|length()|length|len(文字列)|
|一致比較|equals(比較文字)
equalsIgnoreCase(比較文字)|==比較演算子
===比較演算子|==比較演算子|
|検索|indexOf(検索文字列)
lastIndexOf(検索文字列)
contains(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列)
|indexOf(検索文字列)
lastIndexOf(検索文字列)
includes(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列

元記事を表示

SpringBootで作成したWebアプリをEC2にデプロイするときに躓いた話

###はじめに
自分用のメモです。

###開発環境
・Windows10
・OpenJDK 1.8
・SpringBoot 2.2.4
・Gradle 6.3
・MySQL5.7
・AWS(EC2・RDS・VPC)

###作業の流れ
1.デプロイ用のSpringBootアプリを用意
2.EC2・RDS・VPCを準備する
3.Amazon Linux2で必要ツールをインストール
4.Buildしてデプロイ

####1.デプロイ用のSpringBootアプリを用意する
こちらは何でも構わないので自身で作成しているアプリで可

####2.AWS(EC2・RDS・VPC)の用意
ここは後日投稿する予定です

####3.Amazon Linux2で必要ツールをインストール
EC2にログインしyumを最新にします

“`
# yum update
“`
Gitのバージョンを確認とインストール

“`
# yum search git
# yum install git
“`
Gitがインストール終わったら一応確認

“`
# git –version
“`
Java8をイ

元記事を表示

JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021

https://github.com/sonota88/libreoffice-java-sample/tree/20210101

以前書いたこれ↓のアップデート版。細かい修正と「2021年初でも動きましたよ」という動作確認の報告です。

[JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2019](https://memo88.hatenablog.com/entry/2019/12/02/070925)

ちなみに上記は 2019年末の記事なのでだいたい1年ぶりのアップデートになります。

# 変更内容

– 使用範囲内での行インデックス・列インデックスの最大値を取得するサンプルコードを追加
– mvnw を使うように変更
– JUnit のバージョンアップ: 4.x => 5.7.0

# 環境

“`
Ubuntu Linux 18.04
LibreOffice 6.0.7.3
OpenJDK 1.8.0_275
“`

# 参考

– [Java LibreOffice Programming (Calc)](https://five

元記事を表示

EclipseのProject FacetsにJavaServer Faces(JSF)がない

# 事象 : Project FacetsにJavaServer Facesがない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/0dd4f35b-68e9-adb2-3ffd-51d0a52bf957.png)

## 原因 : Javaのプラグインがインストールされていないから
最近Pleiades All in One(https://mergedoc.osdn.jp/) ばかり使っていてたところ、久しぶりに普通のEclipse(https://www.eclipse.org/) を使ったら何がプラグインか分からなくなっていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/6cc31d97-3baf-649b-0adf-3779c6968161.png)

### 対応 : Eclipse Enterprise Java Developer Toolsを

元記事を表示

The selected JRE does not support the current compliance level of 15

# 事象 : Eclipseの設定を見たらなんか言われてた
– 環境
– Windows10 Pro バージョン1903
– openjdk version “11.0.2” 2019-01-15
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/1eb06a74-a4d6-7e33-9f22-f2c509b2c5c3.png)

## 原因 : コンパイラに設定したJavaのバージョンとずれてるから
[Java] > [Complier]をみると「15」になっていた・・・
こっちでも`When selecting 15 compliance, make sure to have a compatible JRE installed and activated(currently 11).`って言われている・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1

元記事を表示

【Java ~クラス~】勉強メモ6

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

クラス

– クラスの定義

クラスの定義は、`「class クラス名」`とします。
クラス名の最初の文字は、大文字にする。
ファイル名は、`「クラス名.java」`としなければなりません。

“`.java:person.java
class Person {
// ここのメソッドを定義
}

“`

– 他クラスのメソッドを呼び出す

`クラス名.メソッド名()`とすることで、他のクラスのメソッドを呼び出すことができます。

下の例では、
MainクラスとPersonクラスの2つのクラスがあり、MainクラスのmainメソッドでPerson.hello()と
する事でPersonクラスのメソッドを呼び出している。

“`.java:main.java
class Main {
public static void main(String[] args) {
Person.hello();
}
}
“`

`

元記事を表示

【Java】LinkedHashMapクラスの使い方

#プログラミング勉強日記
2020年12月31日
LinkedHashMapクラスの使い方を簡単にまとめる。

#LinkedHashMapクラスとは
 HashMapクラスと同じように情報をキーとバリューのペアで格納して使う。LinkedHashMapクラスはHashMapクラスを継承しているので、HashMapクラスが持つ機能を持っている。HashMapクラスは要素の順番を保障しないが、LinkedHashMapクラスは格納された順番を保持している。

 特徴としては、キーとバリューのペアで要素を保持し、キーの重複を許可しない。nullをキーやバリューとすることができる。要素が格納された順番を保持する。

#使い方
 要素の追加のメソッドは、java.util.HashMapクラスで実装されているメソッドで、サブクラスのLinkedHashMapクラスも同じメソッドで要素の追加を行う。
 要素の取得のメソッドは、引数で指定したオブジェクトをキーに持つバリューを返す。キーがLinkedHashMap内になければnullを返す。

“`java:基本的な書き方
// 要素の追加
pu

元記事を表示

synchronizedとReentrantLockについて(Java&Kotlin実装例)

# synchronizedとは
そもそもJavaでは特定のオブジェクトに関する操作をスレッドセーフにするために`synchronized`という修飾子が用意されています。
例えば以下のように付与します。

“`Data.java

public class Data {
int x = 0;
int y = 0;

public synchronized void inc() { // synchronized method
x += 1;
y += 1;
}

public void dec() {
synchronized (this) { // synchronized statement
x -= 1;
y -= 1;
}
}
}
“`

`synchronized`が付与されたメソッドを定義すると、メソッドの呼び出し元のスレッドがこのインスタンス(この場合Dataインスタンス)に対してロックを取ります。一度ロック

元記事を表示

WindowsにzipでJavaをインストールする

– 環境 : Windows10 Pro バージョン1903
– [MacでHomebrewを使ってインストールする場合はこちら](https://qiita.com/ponsuke0531/items/9be8dee67a91c6c78d4f)

# 1. zipファイルをダウンロードする
1. Oracleのサイト : `https://jdk.java.net/{バージョン}/`
– 今回はJDK11なのでhttps://jdk.java.net/11/
1. 「Older releases, which do not include the most….」と表示されている場合は[OpenJDK Archive]リンクからダウンロードサイト(https://jdk.java.net/archive/)を表示する
2. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/3ba19cd2-de99-1662-74fa-084ddb2f319e.png)
2

元記事を表示

gRPCにおけるエラーハンドリング(Kotlin版)

gRPCサーバーでエラーとなった場合、どのようにハンドリングすれば良いのか調べましたので、まとめておこうと思います。なお、Unary RPCs(SimpleRPC)の場合についてのみ記載します。Streamingを利用する場合については考慮しません。

ポイントは、Googleが公式にオススメしているメッセージ構造を利用することです。

具体的には、[gRPCの公式サイト](https://grpc.io/docs/guides/error/#richer-error-model)でオススメされている[error_details.proto](https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto)のメッセージ構造を利用しましょう。このprotoファイルはproto-google-common-protos-{version}.jarに同梱されています。このprotoファイルには様々なメッセージタイプが定義されており、それらに対応するJavaクラスも同じJARに同梱されていま

元記事を表示

C#のラムダ式とLinqついて

C#のラムダについて勉強したことをまとめる。
Java8での場合についても記載する。

#1. C#のラムダまでの歴史

以下の例題でラムダへの経緯について記述する。

例題:Stringの配列に対して、文字列の長さでデータを抽出する。

“`cs:ラムダ無し
private void button2_Click(object sender, EventArgs e)
{
var values = new string[] { “a”, “bb”, “ccc”, “dddd”, “eeeee” };
var result = GetData(values);
Console.WriteLine(string.Join(“,”, result));
}

private string[] GetData(string[] values)
{
var result = new List();

元記事を表示

【Java ~メソッド~】勉強メモ5

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

メソッド

メソッドとは、何らかの処理を割り当てた部品である。
Javaのファイルを実行すると、先ず自動的にmainメソッドが実行されます。
mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になります。

– メソッドの流れ

“`.java
class Main {
public static void main(String[] args) { //①
hello(); //②
}

public static void hello() {
System.out.println(“Hello World”); //③
}
}
“`

① mainメソッドが呼ばれる

② mainメソッドの中で、helloメソッドが呼ばれる

③ helloメソッドの中で、
  System.out.println(“Hello World”)が

元記事を表示

【Java】WindowsでJavaのアップデートを行う方法

#プログラミング勉強日記
2020年12月30日
Javaのアップデート方法について簡単にまとめる。

#Javaのアップデートとは
 パソコンにインストールされているJavaを最新のバージョンにアップデートすることである。Javaの開発は日々行われているのでバージョンアップのたびに最新のJavaがリリースされている。
 Javaは常に最新バージョンにしていた方がいい。セキュリティの面でも性質の向上の面でもJavaのアップデートは必要である。

#アップデート方法

##1. Javaのコントロールパネルを開く。
 Javaの設定を行うコントロールパネルを開く。Windowsマークを押して、`Javaの構成`をクリックするか、左側の検索欄でJavaと入力すると`javaの構成`が表示されるのでクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/a2c1fe8b-47e2-1127-522d-cb70a81deadd.png)

##2.更新タブから

元記事を表示

Elasticsearch 7.7 を Java 11 で動作させるまでに参考にしたリンク集

## 動作確認環境

– CentOS7、CentOS8
– Java 11
– Elasticsearch 7.7
– Kibana 7.7

## 参考URL

**環境構築関連**

yumでリポジトリ登録して環境ごとにバージョンを統一できるようにする(CentOS8では、dnfを使用する)

https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
https://qiita.com/inouet/items/6276c5a08c4fe5eecdb5

https://qiita.com/tikeda0924/items/d9ffd43e18da3a64681d
https://gitya107.hatenablog.com/entry/2018

元記事を表示

OTHERカテゴリの最新記事