Windsurfエディタ(旧Codeium)でPlantUMLプラグインを使用していると、以下のようなエラーメッセージが表示されることがあります。
ダイアグラム"パッチ処理のクラス図"にエラーが見つかりました Exception in thread "main" java.lang.UnsatisfiedLinkError: 'boolean sun.awt.PlatformGraphicsInfo.hasDisplays0()' at java.desktop/sun.awt.PlatformGraphicsInfo.hasDisplays0(Native Method) at java.desktop/sun.awt.PlatformGraphicsInfo.hasDisplays(PlatformGraphicsInfo.java:39) at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:91) at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:102) at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) at java.desktop/java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1182) at net.sourceforge.plantuml.FileFormat.(FileFormat.java:90) at net.sourceforge.plantuml.Option.(Option.java:101) at net.sourceforge.plantuml.Run.main(Run.java:97)
このエラーは、Java AWTのネイティブメソッド「hasDisplays0()」が見つからないことを示しています。これはPlantUMLがAWTのグラフィック機能を使用する際に発生する問題です。
問題を調査するために「java -version」コマンドを実行すると、以下のような結果が得られました:
$ java -version [0.028s][warning][cds] A jar file is not the one used while building the shared archive file: C:\Users\k-hayashi\AppData\Roaming\Windsurf\User\globalStorage\pleiades.java-extension-pack-jdk\java\21\lib\modules [0.029s][warning][cds] A jar file is not the one used while building the shared archive file: C:\Users\k-hayashi\AppData\Roaming\Windsurf\User\globalStorage\pleiades.java-extension-pack-jdk\java\21\lib\modules [0.029s][warning][cds] C:\Users\k-hayashi\AppData\Roaming\Windsurf\User\globalStorage\pleiades.java-extension-pack-jdk\java\21\lib\modules timestamp has changed. openjdk version "21.0.6" 2025-01-21 LTS OpenJDK Runtime Environment Temurin-21.0.6+7 (build 21.0.6+7-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.6+7 (build 21.0.7+6-LTS, mixed mode)
WindsurfはTemurin OpenJDK 21を使用していることがわかりました。
この問題は、PlantUMLのJava実行環境を変更することで解決しました。具体的には、以下の手順を実施しました:
"C:\Program Files\Java\jdk1.8.0_281\bin\java.exe"
この変更により、PlantUMLのダイアグラム生成が正常に動作するようになりました。
JDK 8(1.8)を使用することで問題が解決した理由としては、以下の可能性が考えられます:
また、別の解決策として、ヘッドレスモードを使用する方法もあります。設定に「-Djava.awt.headless=true」を追加することで、グラフィック環境なしでPlantUMLを実行することができます。
この問題はWindsurf特有のものではなく、VS Code、IntelliJ IDEA、Eclipseなど他のIDEでもPlantUMLを使う際に同様の問題が発生する可能性があります。特に、最新のJDKを使用している場合は注意が必要です。
Windsurfエディタ(旧Codeium)でPlantUMLプラグインを使用する際にAWTの問題が発生した場合は、以下の対処法を試してみてください:
こうした問題は、Java AWTのネイティブコンポーネントとの連携に関する問題であり、Java実装やバージョンによって動作が異なる場合があります。
著者: k-hayashi (khayashi4337@gmail.com) 日付: 2025-05-01