はじめに
近ごろ PlantUML で記述されたテキストに遭遇することが増えてきました。メインのテキストエディタとなりつつある VSCode に PlantUML extension をインストールしてみたところ、、
プレビュー(Alt-D
)の際に WARNING メッセージが!
ダイアグラムは正しく表示されているようですが気に障るので直します。
調査
雰囲気からして Java のメッセージっぽい。Java 詳しくないのでググってみると、まったく同じ issue が PlantUML の フォーラム にありました。
Illegal reflective access by net.sourceforge.plantuml.svg.SvgGraphics - PlantUML Q&A
原因は SvgGraphics が internal JRE class を直接使用していてこれがお作法に反するらしい。さらにこの検出は Java 9(with Project Jigsaw)によって可能になったもので、それより前の Java Runtimes では検出していなかったと。
自分の環境を調べてみると OpenJDK 13 がインストールされていました。
% java -version openjdk version "13" 2019-09-17 OpenJDK Runtime Environment (build 13+33-Ubuntu-1) OpenJDK 64-Bit Server VM (build 13+33-Ubuntu-1, mixed mode)
ということは Java 8 を別途インストールし、Java 8 の上で動かせば回避?できるかも。さっそく試してみます。
Java 8 で回避
まずは、Java 8 のインストール。以下より所望のアーカイブを取得します。ちなみに自分の環境は Ubuntu x64 なので、これベースで解説します。
OpenJDK 13 の環境を汚したくないので、Java 8 はユーザローカルな環境に配置します。
% mkdir $HOME/java % mv jre-8u241-linux-x64.tar.gz $HOME/java % cd $HOME/java % tar zxvf jre-8u241-linux-x64.tar.gz % ./jre1.8.0_241/bin/java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
次に PlantUML extension の設定を変更し、インストールした Java 8 を使用するようにします。
- VSCode の Settings を開く(
Ctrl-,
) - 検索欄に "plantuml.java" と入力する
- Plantuml: Java が現れるので上記でインストールした
bin/java
へのフルパスをセットする
こんな感じ。んでプレビューを再表示すると、
WARNING が消えています。やったね!
β 版で回避
先ほどの Q&A を読み進めてみると、この問題を対処した β 版が answer として post されていました。こちらの方法も試してみます。answer に書かれたの URL より jar ファイルをダウンロードします。
http://beta.plantuml.net/plantuml.jar
今度はカスタマイズされた plantuml.jar を使用するように PlantUML extension の設定を変更します。
- VSCode の Settings を開く(
Ctrl-,
) - 検索欄に "plantuml.jar" と入力する
- Plantuml: Jar の設定欄が現れるのでダウンロードした jar ファイルへのフルパスをセットする
- 確認のため、先ほどの Plantuml: Jar は空欄に戻す
先ほど同様に WARNING が消えていることを確認できました。
おわりに
β 版が公開されている以上、正式なリリースに上記の修正は含まれるのだと思います。β 版でお茶を濁したいけど、正式版がリリースされたときに入れ替えるの忘れそう、、