ドッカーを使用してScalaアプリケーションを実行しようとしています。私は、次の構造のサンプルプロジェクトを作成しました。java.lang.RuntimeException:メインクラスが見つかりません
build.sbt
name := "test"
version := "1.0"
scalaVersion := "2.12.2"
プロジェクト/ build.properties
sbt.version = 0.13.15
のsrc /メイン/スカラ座/ HelloWorld.scala
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
}
今私がsbt run
を行うと、すべて正常に動作し、私は素敵なこんにちは世界の挨拶をしています。
$ sbt run
...
[info] Set current project to test (in build file:/Users/yuchen/Documents/test/)
[info] Running HelloWorld
Hello, world!
[success] Total time: 1 s, completed 22-May-2017 4:30:28 PM
私はDockerfileをaded:
FROM openjdk:8
ENV SCALA_VERSION 2.12.2
ENV SBT_VERSION 0.13.15
RUN touch /usr/lib/jvm/java-8-openjdk-amd64/release
RUN \
curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
RUN \
curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb && \
apt-get update && \
apt-get install sbt && \
sbt sbtVersion
WORKDIR /root
CMD sbt run
彼らはすべてのhttps://hub.docker.com/r/hseeberger/scala-sbt/~/dockerfile/からコピーされ、追加の最後の行CMD sbt run
とされています。
そして私は、ドッキングウィンドウのコマンドを実行してみました:
docker build -t test .
docker tag test test/test:1.0
docker run test/test:1.0
はしかし、私はこのエラーを取得しておいてください。
[info] Set current project to root (in build file:/root/)
[info] Updating {file:/root/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) No main class detected.
[error] Total time: 0 s, completed May 23, 2017 4:00:19 AM
それが何を意味し、どのように私はこの問題を解決するのですか? FYI
:私はhttp://www.scala-sbt.org/sbt-native-packager/formats/docker.htmlの承知していますが、ちょうど私がこれを勉強としてDockerfileを書いてみたいと思います。
あなたのデバッグ出力は私にとっては意味がありません。それらは実際にコマンドが使用されていますか?コンテナからの出力は、 '/ Users/yuchen/Documents/test /'の 'build.properties'ファイルで' sbt.version'を見つけることができないと言っています。しかし、 'Dockerfile'はどんなフォルダにも何もコピーせず、実行コマンドはボリュームをマウントしません。エラーは代わりに 'file:/ root /'を表示する必要があります。 –
こんにちは@AndyShinn申し訳ありませんが、私はランダムなものを試していました。そのうちの1人が '/ root'を私の実際の作業ディレクトリに変更していました。明らかに、それは問題を解決しませんでした。私は 'WORKDIR/root'でコマンドを再実行し、出力ログを更新しました。どんな考えや提案がここに間違っていますか? –