sdkmanでJavaの切り替え

sdkmanでJavaを入れて使っているけど、特定のディレクトリに入ったときにJavaのバージョンを切り替えたい場合にどうするのが良いかを調べてみると、切り替えたいディレクトリで

sdk env init

をすると、.sdkmanrcファイルが生成されるので、そこで指定しておけば良さそう。たとえば、

java=17.0.12-tem

みたいな感じ。でも、これだけだとディレクトリに入ったときに自動では切り替わらないので、自動で切り替わるようにしておく設定が必要。

sdk config

とすると設定値が編集できるので、

sdkman_auto_env=true

としておく。この設定をすぐに有効にしたい場合は

sdk env

をして反映しておく。

という感じことをしておけば、自動でJavaのバージョンを切り替えて利用できるはず。

EclipseのLink with Editor

Eclipseを利用していて、編集しているファイルをPackage Explorerで選択された状態にする方法がわからず、どう設定するのかとChatGPTに聞いてみたら、Link with Editorだった。

設定手順は、

1. Eclipseを開く

Eclipse IDEを開き、Package Explorerが表示されていることを確認します。

2. Package Explorerの設定を確認

• Package Explorer ビューの右上にある小さなアイコン(「ビューのメニュー」アイコン、通常は逆三角形の形をしています)をクリックします。
• メニューが表示されるので、その中から 「Link with Editor」 または 「エディターとリンク」 を選択します。

3. 「Link with Editor」を有効にする

• チェックボックスがオンになると、現在アクティブなエディターで開いているファイルが自動的にPackage Explorerで選択されるようになります。

という感じで有効にしたら、期待する動きになった。

Tomcat 10.1でJSTLを利用する

最近、JSPを利用する人も少ないためか、JSTLをTomcatで使うための情報がなさそうな雰囲気でもあるので、メモがてらにポイントを書いておく。

まずは依存関係に入れるJARファイルですが、Mavenであれば以下の感じで追加する。

    <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
      <version>3.0.1</version>
    </dependency>

jakarta.servlet.jsp.jstlが実装なので、これを入れないと動かない。(これでちょっとハマりました…) なので、後者の方を入れないと以下のようなエラーが出ます。

Caused by: org.apache.jasper.JasperException: /WEB-INF/view/index.jsp (line: [1], column: [1]) Unable to find taglib [c] for URI: [jakarta.tags.core]

JARファイルを依存関係に追加しておけば、あとは、taglibの宣言も

<%@taglib prefix="c" uri="jakarta.tags.core"%>

のような感じで、http://〜で指定したuriがjakarta.tags.〜に変わってます。これも書き変えておきます。

この辺を対応すれば、Tomcatの以前のバージョンからも移行できると思います。(javaxからjakartaパッケージにいろいろと変えるという大きな作業はあるとは思いますが…)