-1
私もMavenを使用してJavaをコンパイルすることができ、標準ドッカーイメージtomcat:9
に基づいて、ドッカーイメージを構築しようとしています:設定JDK:9
私が最初docker run
tomcat:9
私はこれらを取得すると結果:
java -version # openjdk version "1.8.0_102"
javac -version # javac: command not found
echo $JAVA_HOME # /usr/lib/jvm/java-8-openjdk-amd64/jre
dpkg --get-selections | grep \\-jre # openjdk-8-jre-headless:amd64
dpkg --get-selections | grep \\-jdk # (none)
update-alternatives --config java
# There is only one alternative in link group java (providing /usr/bin/java)
update-alternatives --config javac # error: no alternatives for javac
ときIその後、docker build
このDockerfile
FROM tomcat:9
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk maven
と派生ドッカーの画像
とdocker run
それは私がこれらの結果を得る:
No compiler is provided in this environment.
Perhaps you are running on a JRE rather than a JDK?
:I(と私の
pom.xml
が存在するIディレクトリにある)同じDockerfileで、その後
RUN mvn package
、 私は、このエラーメッセージを取得する場合、しかし、
java -version # java version "1.7.0_111"
javac -version # javac 1.7.0_111
echo $JAVA_HOME # /usr/lib/jvm/java-8-openjdk-amd64/jre
dpkg --get-selections | grep \\-jre # default-jre, default-jre-headless, openjdk-7-jre:amd64, openjdk-7-jre-headless:amd64, openjdk-8-jre-headless:amd64
dpkg --get-selections | grep \\-jdk # penjdk-7-jdk:amd64
update-alternatives --config java # (3 alternatives
# /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java,
# /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java,
# /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java,
# with the 1st one selected)
update-alternatives --config javac
# There is only one alternative in link group java (providing /usr/bin/javac)
を
この環境でMavenに(JREではなく)インストールされているJDKを認識させるにはどうすればよいですか?
(つまり、手作業でJAVA_HOME
を変更する)正しい方法を選択するか、より良い方法があります。システムの完全性の点では?
Java 7が必要な理由は何ですか? –
@ cricket_007 JRE(javac'なし)の代わりにJDK(w/'javac')が必要です。バージョンは二次的に重要です。 JDK 8でも問題ありません。 – Drux
私は参照してください。私は、コンテナとは独立してアプリケーションをコンパイルし、サーバーのWebRootにボリュームをリンクするという標準的なアプローチをとっていると思います。 –