JAVA関連のことを調べてみた2020年06月13日

JAVA関連のことを調べてみた2020年06月13日

VSCode&Java開発環境構築で詰まった点

# VSCodeでも簡単にJavaのデバッグが可能!
構築手順については下記リンク参照。
https://qiita.com/takuma-jpn/items/b49785a314fb4db85775
# デバッグ時になぜかエラー
**Failed to launch debuggee in terminal with TransportTimeoutException**
手順通りにやったのにエラー↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482410/bb855b20-f155-70ce-fe31-a683d2a35721.png)

debugの際にターミナルを利用しようとするから的なことかな、ということで検索したところ
GitHubのissueを見つけた。
Ctrl+Shift+Pからユーザー設定を開き「java debug setting console」と検索。
デフォルトで「integratedTerminal」となっているが「internalConsole」を指定

元記事を表示

【IntelliJ IDEA】大文字/小文字の区別なしでコード補完候補を表示させる方法

IntelliJ IDEAのコード補完候補表示がとても便利でよく使っているのですが、デフォルトの設定では、クラス名のような大文字始まりの候補を表示させるためには、先頭の文字を大文字で入力する必要があります。

小文字で入力した例
小文字始まり

大文字で入力した例
大文字始まり

個人的には小文字で入力しても、大文字始まりのコード補完候補が表示されてほしいので、今回はこれを実現するための方法を紹介します。

## 環境
– IntelliJ I

元記事を表示

Javaで簡単な計算問題ゲームを作りました

# 足算ゲーム
ふと、脳を鍛える大人のDSトレーニングというゲームを思い出し
そのゲームに収録されていた足算をいかに早く解くかというトレーニングを
プレイしたくなったので自分でプログラムを書いてみました。
以下がそのコードです。

“`java:Main.java
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
int count = 0;
long start = 0;
long stop = 0;
long timeresult = 0;
Scanner sc = new Scanner(System.in);
System.out.println(“計算問題を出題します。”);
System.out.println(“10問出題されます。”);
Sys

元記事を表示

入門本では学べないJavaの実用的な書き方【同値検査編】

# はじめに

僕はIT系の専門学生で、まだ実務経験があるわけではありません。ですが、先生はもともとSEとPGをされていたそうで、実務的な書き方を教えてくださいます。その講義をもとに解説を書いています。

もし今そんな書き方しないよというような場合は、教えていただけるとありがたいです?

# 解説

同値検査とは、二つの値が等しいかどうかを判定するものです。この同値検査はプリミティブ型であれば問題ないのですが、参照型の場合は問題があります。

例えば、数値(プリミティブ型)の比較はこのような感じです。

“`java
int a = 1
int b = 1

if(a == b) {
System.out.println(“true”);
} else {
System.out.println(“false”);
}

//=> true
“`

**プリミティブ型**の比較は前述したように問題はありません。なぜなら、a, bそれぞれのメモリの番地に直接、値が格納されるからです。それに対し、**参照型**は以下のようになります。

“`java
String a = ne

元記事を表示

AWS CodeArtifactでJavaのライブラリを管理してみる

# はじめに
2020年6月にGAされたAWS CodeArtifact、大きいプロジェクトなんかで、共通のライブラリを管理するのにローカルリポジトリが欲しいけど、わざわざそのためにEC2立てたりコンテナ立てたりするのはな……と思っている人には大変使い勝手の良さそうなもの。

というわけで、今回は実際にAWS CodeArtifactに触ってJavaのライブラリを管理してみる。
せっかくだから、MavenとGradleで動かしてみるし、CodeArtifactと連携したライブラリのCI/CDまでやってみる。
お供になるのは、いつでも[公式のユーザーガイド](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)(なお、この記事を書いている時点ではまだ日本語マニュアルは存在しない)

あと、ユーザーガイドに書いてあるように、CLIは最新版にアップデートしないと使えないので注意。

# まずはリポジトリを作ってみる
サービス選択から“`CodeArtifact“`を検索してトップ画面にいき、「リポジトリを作成」ボ

元記事を表示

[Java]新仕様のYahoo!商品検索API実装

Yahoo!の商品検索APIが新仕様になるのでメモ。
https://developer.yahoo.co.jp/webapi/shopping/shopping/v3/itemsearch.html

検索ワードのエンコードが必要になり、JSONの構造が変わりました。
JSONを扱うためにJacksonを利用します。導入は各自で調べてください。

##やること
1.HTMLから受け取った検索ワードをAPIに送る。
2.JSONを受け取り必要な情報を抜き出してフォワードする。

###1.HTMLから受け取った検索ワードをAPIに送る。
旧仕様からの変更点として、UTF-8エンコードが必要になりました。

“`java:java
//アプリケーションID
final String appID = “アプリケーションID”;

//検索ワードをUTF-8エンコード
String query = request.getParameter(“searchWord”);
String encodedQuery = URLEncoder.encode(query, “UTF-8”);

//U

元記事を表示

Javaのメソッド呼び出しについての質問です。

Stage stageを仮引数とするメソッドを呼び出すためには実引数はどのような値にすればよいのでしょうか?

public class ShowGraph extends Application{
public static final String USER = “USER”;
public static final String PASS = “PASS”;
public static final String URL =”URL”;

@Override
public void start(Stage stage){
stage.setTitle(“RM推移”);
final CategoryAxis dayAxis = new CategoryAxis();
final NumberAxis RMAxis = new NumberAxis();
dayAxis.setLabel(“実施日”);

final LineChart lineChart =
new LineChart

元記事を表示

アリババクラウド機能計算のための依存ライブラリのインストール

この記事では、既存のツールを使用して、最小限の手動介入で**Function Compute**プロジェクトに依存ライブラリをインストールする方法を説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/installing-a-dependency-library-for-function-compute_594410)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#パッケージマネージャのインストールディレクトリ
現在、[Function Compute](https://www.alibabacloud.com/ja/products/function-compute)はJava、Python、Node.js環境をサポートしています。これら3つの言語のパッケージマネージャは、それぞれMaven、pip、NPMです。以下では、これらのパッケージマネージャのそれぞれのインストールディレクトリを説明します。

**Maven**
M

元記事を表示

EclipseでTomcatがタイムアウトエラーにしかならなくて悩まされた話

# はじめに
この記事は以前EclipseからTomcatが起動出来ない事案が発生した際の事をまとめます。
あまりにも原因が盲点な箇所でしたので、同じように悩んでいる人のヒントになりますように。
ターゲットとしては開発環境構築をしている人向けなので、初心者向けとなります。

#環境
OS:macOS Catalina(10.15.5)
Eclipse:Eclipse2020~2018
 ※原因の特定が出来なくて3バージョン程落としました

#事のはじまり
3ヶ月ほど前にstrus2を使用したWEBアプリケーションを作成しようとしていたのですが、長らく放置していたので続きを作るかという流れでごちゃごちゃ触っていました。
(ライブラリが多いのでmavenプロジェクトに移行するぞという意志)
POMの設定も終わり、いざサーバー起動するぞという所でいつもなら秒で起動するサーバーが何故か起動しない…
そのまま待っていると何故かサーバーのタイムアウトエラーになってしまいました。
スクリーンショット 2020-06-12 11.05.07.png

元記事を表示

Androidでシリアル通信を利用する

#はじめに
Androidでシリアル通信をする方法があまり紹介されていないので記載します。

##対象機器
Android
REX-USB60MB (USB-シリアル変換)

##対象環境
Android6.0
AndroidStudio
Kotlin

##ダウンロード

FTDI社のホームページから**Java D2XX Update including FT4222H support**の項目にある**here**をクリックしてライブラリをダウンロードします。
[FTDI社のホームページ](https://www.ftdichip.com/Android.htm)

ダウンロードした圧縮ファイルを解凍します

**ルート**フォルダにある**d2xx.jar**ファイルのみ使用します。
**res/xml/**フォルダにある**device_filter.xml**は中身が古いので使わずに作ります。

##d2xx.jarをライブラリに追加
プロジェクトツリーの1番上**Android**と表示されている右の▼をクリックして表示される一覧から**プロジェクト**を選択します。

元記事を表示

ログからアタリを付ける、ハングの原因となるHashMapの使い方

以下のような `HashMap` へのログが観測されたら

“`Sample1.log
at java.util.HashMap.findNonNullKeyEntry(HashMap.java:605)
at java.util.HashMap.putImpl(HashMap.java:701)
at java.util.HashMap.put(HashMap.java:684)
at zzz.yyy.xxx.setSomething(SomeUtil.java:nnn)
“`

“`Sample2.log
at java.util.HashMap$TreeNode.putTreeVal(HashMap.java:2013)
at java.util.HashMap.putVal(HashMap.java:648)
at java.util.HashMap.put(HashMap.java:622)
at zzz.yyy.xxx.setSomething(SomeUtil.java:nnn)
“`

例の場合、`SomeUtil.java` を見ましょう

元記事を表示

【Java】Apathce TikaでCharsetを取得する/CharsetからStringを初期化する【Kotlin】

# やること
`Apache Tika Parsers`を用いてファイルの`Charset`(文字コード)に関わらず、`Java`の`String`として読み込みます。

`Apache Tika Parsers`は以下からご利用ください。

– [Maven Repository: org\.apache\.tika » tika\-parsers](https://mvnrepository.com/artifact/org.apache.tika/tika-parsers)

# やり方
今回は`UniversalEncodingDetector()`を使って`Charset`を取得し、`Charset`に合わせて`String`のコンストラクタを呼び出しています。

例では`TikaInputStream`の初期化に`InputStream`などを利用していますが、やり方はいくつか有るので各ドキュメントをご参照下さい。
`String`の初期化などもそうです。

“`kotlin
// MetadataはKotlinと名前被りが有るため改名して用いる
import org.a

元記事を表示

AWSのEC2にサーブレット(Servlet)環境を構築するメモ

## 1.Javaインストール

### Java8の検索
“`
yum search java-1.8.0-openjdk-devel
“`

### Java8のインストール
“`
sudo yum install java-1.8.0-openjdk-devel
“`

## 2.Apachのインストール

### Apachのインストール
“`
sudo yum -y install httpd
“`

### Apachの起動
“`
sudo service httpd start
“`

### 再起動時に自動起動
“`
sudo systemctl enable httpd.service
“`

## 3.インバウンドルールの作成
1. セキュリティグループ
2. インバウンドルールを編集
3. 「`HTTP TCP 80(ポート範囲) 0.0.0.0/0`」を作成
4. ルールを保存

## 4.Tomcatインストール

### Tomcatインストール
“`
sudo amazon-linux-extras install tomcat8.5

元記事を表示

java(多態性のメリット)

#多態性と配列の組み合わせ
###配列を組み合わせていないコード

“`java
public class Main {
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Thief t1 = new Thief();
Wizard w1 = new Wizard();
Wizard w2 = new Wizard();
//冒険開始!
//まず宿屋に泊まる
h1.hp += 50;
h2.hp += 50;
t1.hp += 50;
w1.hp += 50;
w2.hp += 50;
}
}
“`

###配列を組み合わせたコード

“`java
public class Main {
public static void main(String[] args) {
Character[] c = new Character[5];
c[

元記事を表示

java(多態性)

#多態性(ポリモーフィズム)
「インスタンスをあいまいに捉える」
継承によりis-aの関係が成立しているなら、インスタンスを親クラス型の変数に代入することができる

“`java
SuperHero h = new SuperHero();
“`
通常のSuperHeroインスタンス

“`java
Character c = new SuperHero();
“`
SuperHeroクラスの親クラスにCharacterを持っている前提

##あいまいな型の箱へのインスタンスの代入

“`java
public class Main {
public static void main(String[] args) {
Wizard w = new Wizard();
Character c = w; // Character型の箱にいれる
Matango m = new Matango();
c.name = “魔法使い”;
c.attack(m); //呼び出せる

元記事を表示

初心者が1ヶ月でJava Silverを取得した話

#はじめに
4ヶ月前、Java Silverに合格できたので諸々の振り返りと
今から勉強しようって人たちの役に立てればと思ったので書いていきます。

#Java Silverとは
Java Silverとはオラクル公認のJavaの技術レベル認定資格です。
世界共通ベンダー試験で、特にSilver以上は全世界で通用する共通資格となっているので、
Java関連の資格の中で最も人気がある資格のようです。

#Java Silverの試験概要
Java Silverは試験時間150分の全77問の選択形式の試験です。
65%以上の点数で合格とされているので、51問以上正解すれば合格します。

受験料は¥26,600(税別)で、オラクルの公式ページから受験チケットの購入するか、楽天でも購入できます。
確か楽天の方がちょっと安かったと思うので楽天をオススメします。

#Java Silverの受験方法
受験するまで色々と手続きがあります。試験が終わった後も色々と手続きがあります。
こちらの記事が分かりやすかったので参照してみてください。
[Java Silverの試験を受けたんだが手続きがマジめんど

元記事を表示

Spockで強制的にエラー[Exception]を発生させる

“`groovy:ServiceImpl
def “異常系”() {
setup:
// service.createBody(_ as boolean) >> { throw new RuntimeException(“dummy”) }
service.createBody(_) >> { throw new RuntimeException(“dummy”) }

when:
String testString = service.send(to, hash)

then:
RuntimeException e = thrown()
e.getMessage() == expected

where:
testcase | to | hash | expected
“test” | “aaa@co.jp” | “testhash” | “dummy

元記事を表示

shaded-jarの作り方

# Shaded jarとは
Javaでのdependency-hellを回避するための方法の一つ。

元々のコードベースが、ライブラリAのバージョンXに依存しているとする。
このコードベースに新たなライブラリBを追加したい。
しかしながら、ライブラリBはライブラリAのバージョンYに依存しており、
ライブラリAのバージョンXとYは互換性がないという状況を考えよう。

“`
CodeBase
|- Library A, Version X
|- Library B
|- Library A, Version Y # Conflict!!!
“`

このままではライブラリAのバージョンX, Yのどちらを選んでも新規機能と既存機能の
両方を同時に動かすことはできない。

ここで登場するのがshaded-jarである。
Library AのバージョンYのクラスを全てLibrary Bに同梱してしまい、依存関係を排除したライブラリB’を作成するという方法だ。

“`
CodeBase
|- Library A, Version X
|- Library B’ (includ

元記事を表示

Mac,VSCode,JavaでHelloWorldした

# はじめに

タイトル通り、ただHelloWorldするだけです。
よくある標準出力するだけの課題とかをささっとすますにはいいかもしれません。
今からこの環境でWebアプリとか作っちゃうんだ!って人にはお勧めしません。
他にIntelliJ IDEA, Eclipse + Pleiades, NetBeansでの環境構築をしている記事等々あると思うので、そちらを参考にしてください。
どうしても、VSCodeでやってみたいんだ!って人だけ参考にしていただければと思います。

## 動作確認した環境

– macOS : Catalina 10.15.5
– VSCode : 1.45.1
– Java : Amazon Correto 11.0.7

## 方法

Javaはすでに入っているよと言う人は、「VSCodeにJavaの拡張を入れる」まで飛ばしてください。

### SDKMAN!をインストールする

SDKMAN!は簡単に言うと同一環境で複数のJavaを管理するためのツールです。
こちらを参考にSDKMAN!をインストールしましょう。

元記事を表示

progate java L1基本まとめ cosole.log,変数と定数の違い、if文

#console.log
console.log();と使う
コンソール上に()内を表示させる
注意点として文字列を表示させたい場合はconsole.log(“”)のように文字列を””で囲む

○ console.log(“あいうえお”) ⇨ あいうえお と表示される
× console.log(あいうえお) ⇨ referenceエラーになる

#値の宣言 変数letと定数const

値を宣言する場合、letまたはconstで宣言する

let numberA = 1;
const numberB = 2;

この2つには違いがあり、letは更新できるがconstは更新できない

###値の更新
変数は値を更新することができる
let numberA = 1;
この時点ではnumberAは1だが、

numberA = 10;
これでnumberAはではなく10になる

#if文
if(条件){処理}←セミコロンは付けない
(条件)を満たした場合に{処理}が実行される

条件の例
a>=b aは以上
a