| @技術/プログラミング

VM 上の Scientific Linux で Jenkins を動かしていて、テスト結果のグラフが表示できない問題に遭遇していた。出るエラーメッセージは以下のようなもの。

Graphics N/A
Unable to access X. You need to run the web container in the headless
mode. Add -Djava.awt.headless=true to VM.

OpenJDK が原因らしい(jenkinsでGraphics N/Aが出た時にしたこと | ミラボ)。

OpenJDK をやめて Oracle の JDK に変えればいいらしいのだけど、 OpenJDK でもグラフ表示できている人はいるっぽいし、ソースから Java を入れるのが嫌なので OpenJDK で何とかする方法を探していた。

もろもろ情報をあさってみたところ、どうもフォントがないのが問題らしい。

Jenkins の wiki にあるとおりに /var/log/jenkins/jenkins.log を漁ってみたら、以下のようなエラーメッセージを発見した。

Caused by: java.lang.Error: Probable fatal error:No fonts found.

これに対して公式 wiki には

Obviously graphics rendering needs access to font metrics. So check java /etc/java-6-openjdk/fontconfig.properties and install missing fonts. OpenJDK refers to DejaVu-Fonts. So type:

sudo apt-get install ttf-dejavu

とあるので、yum search dejavu して dejavu って名前がついてるフォントを片っ端から入れたらちゃんとグラフが表示されるようになった。

お困りの方はお試しください。