jenvを使ってローカルのJavaをJDK17に切り替える手順。現在のバージョン一覧の確認、JDK17のインストーラーの入手とインストール、jenv addでの登録、jenv localでの切り替えと確認まで♪
JavaでUTF-8のCSVを書き出してもエクセルで開くと日本語が文字化けする原因はBOMが無いから。FileOutputStreamの先頭にBOMを書き込むだけで解決します。サンプルコードと確認結果つき♪
VSCodeでKotlin開発をすると出る「Cannot inline bytecode built with JVM target 1.8」エラーはJVMバージョンの不一致が原因。設定でKotlinのJVMターゲットをdefaultから1.8に変えるだけで解決します♪
VSCodeでKotlinを快適に開発するための設定まとめ。Kotlin拡張でシンタックスハイライトとコード補完、F3での関連クラスへのジャンプを有効にし、Code Runnerで右クリックからコンパイル・実行できるようにします♪
サーバーサイドKotlinの開発環境をMacに構築する手順。HomebrewでKotlinをインストールして確認し、HelloWorldをコンパイル・実行するまで。SpringBootなどのフレームワークも手厚くサポートしています♪
JPAとLombokの@Dataを組み合わせた親子関係のEntityでtoStringを呼ぶとStackOverflowErrorになる原因は循環参照。除外したいフィールドに@ToString.Excludeを付ければ解決します。exclude指定は非推奨です♪
JUnitでService層のテストをするときにRepositoryをモック化するライブラリ「Mockito」の使い方。モックとは何かから、Gradleへの依存追加、whenメソッドによるMock化、Spy化、アノテーションでの生成まで♪
Java8の非同期処理でStubやJUnit用にCompletionStage<Void>を意図的に生成する方法。一番スッキリ書けるCompletableFuture.allOf()と、nullが登場するcompletedFuture()の2通りを比較します♪
PlayFramework2.7でJaCoCoのカバレッジ出力対象からviewsやroute、controllerのjavascriptなど自動生成パッケージを除外する方法。build.sbtに追記するだけでレポートの肥大化を防げます♪
PlayFramework2系をsbtではなくGradleで動かす方法。公式のGradleプラグインでgradle runPlayから起動し、JUnitやJaCoCoも使えます。PlayFramework2.7以上・Scala2.13以上は非対応なので注意♪