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

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

rJavaのロード時のエラーへの対処

注) Windowsでの対処法を記載しています。Macとは手順が異なる場合があるので注意してください。

RでJavaを動かせる**rJava**というパッケージがあります。テキストデータの処理などで使うことがありました。便利なパッケージですが、エラーメッセージが出て使えないという話をよく頂きます。今回は、その対象法について説明します。

# エラーについて
インストールを行ったあとに、libraryでrJavaをロードします。
“`{r}
#install.packages(‘rJava’)
library(rJava)
“`
しかし、以下のエラーメッセージが表示される場合があります。使っているOSでエラーメッセージが違うみたいですね。
– Windows
“`{}
Error: package or namespace load failed for ‘rJava’: .onLoad は loadNamespace()(’rJava’ に対する)の中で失敗しました、詳細は: call: fun(libname, pkgname) error: JAVA_HOM

元記事を表示

Java Timeで月末日を取得する

# TL; DR

`java.time.temporal.TemporalAdjusters.lastDayOfMonth()` を使う。

# 実証コード 

“`java
// Java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;

public class Test {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2023, 2, 15);
LocalDate date2 = LocalDate.of(2024, 2, 15);

System.out.println(date1.with(lastDayOfMonth()).format(DateTimeFormatter.ISO_LOCAL

元記事を表示

Calendarクラスで、今日、明日、明後日、昨日、一昨日、来年、昨年の日付を取得する

## 目次
 [1.DateクラスとCalendarクラスのちがい](#1-DateクラスとCalendarクラスのちがい)
 [2.今日、明日、明後日、昨日、一昨日、来年、昨年の日付を取得する](#2-今日明日明後日昨日一昨日来年昨年の日付を取得する)

## 1. DateクラスとCalendarクラスのちがい
### Dateクラス
簡単に日付を表示したい場合などに使用。
現在は非推奨のため基本的にCalendarクラスを使用するのが望ましい。

“`java
package jp.co.study.sample;

import java.util.Date;

public class Qiita {
public static void main (String args[]) {

Date date = new Date();
System.out.println(date.toString());
}
}
“`
出力結果は、Thu Jan 19 19:07:48 JST 2023

下記のようにすると、フォーマットを指定できる。
“`java
p

元記事を表示

JAVA バージョン変更 Mac

## はじめに
今回は、Javanoバージョン変更方法について書いていきます。簡単です。
PCはMacです。今回はJava19.0.1をJava17.0.5に変更します。

## 現在のJavaのバージョンを確認していく

まず、現在のJavaのバージョンを確認していきます。
“`
~ % java -version
java version “19.0.1” 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
“`

このコマンドで、現在のJavaのバージョンは19.0.1であるとわかります。

## インストールされているJavaのバージョンを確認する
次は、変更するJavaのバージョン17.0.5がインストールされているか確認します。

“`
~ % /usr/libexec/java_home -V
Matching Java Virtual

元記事を表示

Javaで無料のタイムスタンプサービスに接続する

## タイムスタンプサービス

無料でタイムスタンプトークンを発行するサービス、[Free TSA Project](http://eswg.jnsa.org/sandbox/freetsa/) に接続します。

## タイムスタンププロトコル

タイムスタンプに関わる仕様は、[RFC3161](https://datatracker.ietf.org/doc/html/rfc3161)、[RFC5816](https://datatracker.ietf.org/doc/html/rfc5816) で 定義されています。

HTTP通信で行う際の仕様が [RFC3161 の 3.4 Time-Stamp Protocol via HTTP](https://datatracker.ietf.org/doc/html/rfc3161#section-3.4) に記載されています。

## タイムスタンプサービスへの接続

今回は、[HttpClientクラス](https://docs.oracle.com/javase/jp/17/docs/api/java.net.http/jav

元記事を表示

String.formatの使い方まとめ

文字列を実装する中で文字列操作をする際にString.formatで実装する機会があったので備忘録。

String, Int, Doubleをそれぞれ使うように作成。
サンプルのユーザーデータは以下

“`kotlin
data class User(
// ニックネーム
val nickname: String = “”,
// 年齢
val age: Int = 0,
// 身長(cm)
val height: Int = 0,
// 足のサイズ(cm)
val shoeSize: Double = 0.0,
)

“`

実際の表示確認は以下

“`kotlin

fun main(args: Array) {
val jack = User(nickname = “ジャック”, age = 27, height = 172, shoeSize= 26.5)

print(String.format(“ニックネーム:%s”, jack.nickname))

元記事を表示

JavaSilver対策〜3秒で解ける問題〜

「JavaSilver」の対策記事となります。

JavaSilverの問題ですが、実は中には問題文もしくは選択肢を見れば速攻で解くことができる問題があります。

本来であればしっかりと理解した上で解くのが良いのですが、正直いくつかのポイントを暗記さえしていれば考えなくとも簡単に解けてしまうものです。

今回はふ〜んくらいの心づもりでこの記事を見ていただければと思います。
では、実際に一つ一つ見ていきましょう!

目次

[1. varによる変数宣言](#varによる変数宣言)
 - [例題1-1](#例題1_1)
 - [例題1-2](#例題1_2)
 - [例題1-3](#例題1_3)
[2. StringクラスとStringBuilderクラスのメソッド](#stringクラスとstringbuilderクラスのメソッド)
 - [例題2-1](#例題2_1)
 - [例題2-2](#例題2_2)
[3. Switch文](#switch文)
 - [例題3-1](#例題3_1)
 - [例題3-2](#例題3_2)

varによる変数宣言

元記事を表示

JavaSilver対策〜nullを極めよう〜

私自身、紫本・白本・黒本と合計1500ページも色々な問題を解いてきたわけですが、後半は正直かなり傾向がわかってきました。というのも、問題文とか答えの選択肢を見ただけで何を引っ掛けようとしている問題なのか大体わかるようになってきます。「これはオーバーライド問題だな」とか「これは抽象メソッド問題だな」「これはnullの理解を聞いてるな」などです。

そこで当初個人的に苦手だった部分や私と同じようにプログラミング初心者の引っかかりそうなところを抽出して紹介していきます。

今回の内容を理解しておけばもったいないところで点数を落とさなくて済むようになるので点数アップも期待できると思います。

それでは早速本題に入っていきましょう!

目次

[1. フィールドの初期値](#フィールドの初期値)
[2. 配列型の出力](#配列型の出力)
 - [要素指定なし-ハッシュ値の出力-](#要素指定なし-ハッシュ値の出力-)
 - [要素指定あり](#要素指定あり)
 - [要素数の確認](#要素数の確認)
 - [明示的なnullの代入](#明示的なnullの代入)
[3. 最後

元記事を表示

はじめてのMac Java環境構築

目次

[1. 今回使用したもの](#1-今回使用したもの)
2. [Homebrew](#rink2)
3. [JDK](#rink3)
3-1. [環境変数JAVA_HOMEの設定](#rink4)
3-2. [環境変数PATHの設定](#rink5)
4. [Tomcat](#rink6)
5. [MySQL](#rink7)
5-1. [PATHの設定](#rink8)
5-2. [バージョン変更時のエラー](#rink9)
5-3. [エラー解決](#rink10)
6. [Git](#rink11)
7. [エディタ](#rink12)
7-1. [Visual Studio Code](#rink13)
7-2. [Eclipse](#rink14)
7-3. [IntelliJ IDEA](#rink15)

1.今回使用したもの

OS

・MacOS Monterey-バージョン12.4-(M1 Mac)

Java

・openJDK17.0.3

エディタ

・Visual Studi

元記事を表示

java try-catch-finallyのreturnについて

***javaのtry-catch-finallyのreturnについて***

javaのtry-catch-finallyのreturnについて意外と見落としがちな部分について記事にしていきます。
このようなtry-catch-finallyがあったとします。![スクリーンショット 2023-01-18 7.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3087483/09cda797-a396-605a-4516-836b1a6c7417.png)
上記のコードは実行結果は***100***になります。
理由としてはtry文の15行目でRuntimeExceptionが発生してそれをcatch文で受け取りnumに100を代入してrerurnでnumを返してからfinallyでnum+=100されているからです。
***この時に24行目のreturn文は処理されずにtry-catch-finallyをそのまま抜けます。***

—-
考え方としては

try
↓例外発生した
catc

元記事を表示

Leetcode 926. Flip String to Monotone Increasing

https://leetcode.com/problems/flip-string-to-monotone-increasing/

## 難易度
### Medium

## アプローチ
### Prefix Sum, Brute-force

“`java
class Solution {
public int minFlipsMonoIncr(String s) {
int count = 0;
int result = 0;
for (char sChar : s.toCharArray()) {
if (sChar == ‘1’) {
count++;
} else if (count > 0 && sChar == ‘0’) {
count–;
result++;
}
}
return result;
}
}

元記事を表示

HashMap,TreeMapのcomputeIfAbsentでConcurrentModificationException

# 事の始まり
とあるプロジェクトでJavaのバージョン更新(8→17)を行っていた時のこと。
`java.util.HashMap`に対して`computeIfAbsent`を呼び出しているところで`ConcurrentModificationException`が発生するようになってしまいました。
この部分は旧バージョンから特にコードをいじっていないところ、かつ複数スレッドから参照されるものではなかったのでJavaのバージョンに起因するものでないかと考えました。

# 原因のコード
調査すると同じHashMapのインスタンスに対してcomputeIfAbsentが入れ子になっていることがわかりました。
簡単に書くと以下のようなコードです。
“`java
Map map = new HashMap<>();
map.computeIfAbsent(“k1”, tk1 -> map.computeIfAbsent(tk1, tk2 -> “value1”));
“`

実際には”k1″というキーに”value1″が入るだけなので入れ子になっている意味

元記事を表示

lombokで@EqualsAndHashCodeのInclude/Excludeが適用されない

# 問題
lombokでEqualsAndHashCodeを使えば自動的にhashCodeとequalsメソッドを実装してくれる。デフォルトでは、staticではなく、transientでないフィールドはすべて評価の対象となる。特定の対象のみを評価したい場合には、メソッドの前に下記のアノテーションを付ける。
“`java:対象コード
@EqualsAndHashCode
public class Data {
@EqualsAndHashCode.Include
String key;

int value;
}
“`
この場合は、keyのみを評価対象とするhashCodeとequalsメソッドができるのを期待する。ネット上に上がっているサンプル例では、このように書いてあるケースもある。しかし、このままでは期待通りに動かない。どうもIncludeが適用されずに、keyもvalueも評価対象になっている。

lombokが生成しているコードを下記コマンドを実施して確認してみる。
“`dosbatch:lombokの生成コード確認コマンド
java -jar lombok

元記事を表示

【Java】EclipseでOracle Databaseに接続する方法

# はじめに
今回は、JDBCを利用し、EclipseでOracle Databaseに接続する方法についてまとます。
大まかな手順と処理について記載しており、技術の詳細には触れていません。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
以下内容のアウトプット
– JDBCドライバの追加
– データベースへ接続と切断
– SQLの操作

# 開発環境
– Java 16.0.2
– JDK javac 10.0.1
– JDBC Oracle 12.1.0.1.0 JDBC 4.1 compiled with JDK7
– Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
– Eclipse

# この記事の内容
1. 前提
2. チートシート
3. JDBCドライバの追加(準備)
4. データベースへ接続と切断(DBManager)
5. SQLの操作(DBへ問い合わせ)

# 1. 前提

元記事を表示

Exception classのgetMessage

getMessage()とprintStackTrace()の違い
ExecutorServiceを使用した場合に発生するExecutionExceptionのgetMessage()について

“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
SampleException se = new SampleException(“xxxxxx”);
System.out.println(se.getMessage());
method();
Exception ex = new Exception(“eeee”);
System.out.println(ex.getMessage());
Exception ex2 = new ExecutionException(se);
System.out.println(ex2.get

元記事を表示

Future interfaceでexceptionをキャッチする

f.get()したときに、ExecutionExceptionが発生する
ExecutionExceptionがsubmit()で発生したExceptionを保有している

“`java
class SampleException extends Exception {
public SampleException(String message) {
super(message);
}

public SampleException() {
}
}
public class Outer {
public static void main(String[] args) throws InterruptedException {
ExecutorService e = Executors.newSingleThreadExecutor();
Future f = e.submit(() -> {throw new SampleException(“exxxxx”);});
e.shut

元記事を表示

ExecutorService Runnable/Callable

Runnable:no return
Callable:return
Future interface#get methodでreturnを取得する

“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
ExecutorService e = Executors.newSingleThreadExecutor();
Runnable r = () -> {
System.out.println(“runnable”);
};
Callable c = () -> {
return 1;
};
Future f = e.submit(r);
try {
System.out.println(f.get());
} cat

元記事を表示

newScheduledThreadPool method

fixedthreadpoolでscheduledThread
“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService s = Executors.newScheduledThreadPool(2);
s.scheduleWithFixedDelay(() -> {
System.out.print(“a”);
},1,1,TimeUnit.SECONDS);
Thread.sleep(500);
s.scheduleWithFixedDelay(() -> {
System.out.print(“b”);
},1,1,TimeUnit.SECONDS);
Thread.sleep(10000);
s.shu

元記事を表示

CentOSでのjavaのインストール

サーバに「JDK11が必要」と言われて、バージョンを確認してみたら、これは何?
そこからJDK11をインストールして、切り替えてみた手順を記録に残しておきます。

自分が今後別のマシンで作業する時のためのメモですので、「そこ違いますよ」という箇所があれば、コメントいただけると助かります。
javaで開発しているのではなく、「ツールを動かすためにJDKをインストール必要があった」というレベルの作業です。

javaのバージョン一覧は[Oracle Java SE Supportロードマップ](https://www.oracle.com/jp/java/technologies/java-se-support-roadmap.html)で確認しました

### やったこと
* バージョンの確認
* JDK11のインストール
* バージョンの切り替え

### バージョンの確認
“`
$ java -version
openjdk version “1.8.0_312”
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 6

元記事を表示

Spring Thymeleaf(HTML)のFormとSpring(Javaのデータクラス)のつなげ方

・はじめに

 この記事においては、会員情報の送信などユーザーに何かデータを送信してほしいときによく使うHTMLのフォームとそのFormで送られる情報をJavaで受け取る方法を書いていきます。

・HTMLの設定

“`HTML:createAccount.html


~省略~

会員登録




元記事を表示

OTHERカテゴリの最新記事