Sonatype NEXUSはOpenJDKだと動かない

シェアする

表題の通り、アーティファクト(Maven)リポジトリであるSonatype NEXUSは、OracleのJava 8 Runtime Environment(JRE)が必要だそうです。

以下で公式にガイディングされている通り、OpenJDKでは動きません。

OpenJDK or other Java distributions or older Java versions are not supported.

(訳:OpenJDKやその他(Oracle意外)のディストリビューション、古い(Java7以前)のJavaバーションはサポートされていません。)

引用:https://help.sonatype.com/repomanager3/installation/java-runtime-environment

困ったこと

  • 環境のJAVA_HOMEがOpenJDKなど、別のランタイムが導入されている。→対処方法は後述
  • 他のJREで動かそうとするとゾンビプロセスとなる可能性がある。→再現性は不明ですが、私の環境では当該事象が発生して、killコマンドでも殺せずにサーバ再起動するはめに。
  • NEXUSの情報収集がし辛い→スマートフォンのNEXUSが検索に多数引っかかるので、ちゃんと「Sonatype NEXUS」と指定したほうが良い。

OpenJDKが使われている場合の対処法

Oracle Javaを導入する

OracleJavaでないと動かないのはしょうがないので、インストールします。ことなるディストリビューションのJavaが混在する環境となります。
導入手順はここでは省きます。

NEXUSで使用するJavaのパスを個別指定する

NEXUSの起動シェルにJREのパスをオーバーライドできる部分があるので、それを書き換えます。
対象ファイルパスは、「(NEXUSホーム)/bin/nexus」です。

「INSTALL4J_JAVA_HOME_OVERRIDE」という変数がどこか(割と上の方)にあるので、それのコメントアウトを外し(先頭の”#”を削除)、”=”の後にOracle Javaのパスを指定します。

(変更前)
(変更例:Oracle Javaが「/usr/java/jdk1.8.0_121」にある場合)

NEXUS再起動

これで、NEXUSを起動させればOKです。
「(NEXUSホーム)/bin/nexus start」など。

参考

%d人のブロガーが「いいね」をつけました。