systemd で Unsupported major.minor version 52.0

スポンサーリンク

CentOS 7.1 で yum で OpenJDK 7 がインストールされている場合があります.

この OpenJDK は,/bin/java です.

一方で,Oracle JDK 8 を rpm でインストールすると,/usr/java/default です.

そんな混在状態で,alternatives で java を切り換えるのではなく,/etc/profile.d/ で JAVA_HOME を設定して,/bin/java (Java 7) よりも /usr/java/default (Java 8) を優先するようにしていました.

ところが systemd は,この設定 (profile の JAVA_HOME) を認識しないとのこと.

結果として,Java 8 向けの Runnable jar を systemd で実行しようとすると,/bin/java (Java 7) で Runnable jar が実行されてしまい,Unsupported major.minor version 52.0 というエラーになってしまいます.

Java 8 のプログラムは Java 7 では動作しません,と.

そのため,systemd の service ファイルの [Service] に,下記のような設定を入れておきます.

...
[Service]
...
EnvironmentFile=/etc/sysconfig/mokyu
...

そのファイルの中身は例えば,

JAVA_HOME="/usr/java/default"

これで再度,sudo systemctl start mokyu などとすると,Java 8 のプログラムが Java 8 で実行されるため,前述のエラーが出なくなりプログラムが実行されます.

Javasystemd
スポンサーリンク
コピペワールド