gpt4 book ai didi

scala - java.lang.RuntimeException:未检测到主类

转载 作者:行者123 更新时间:2023-12-02 19:36:50 24 4
gpt4 key购买 nike

我正在尝试使用docker运行Scala应用程序。我创建了一个具有以下结构的示例项目。

build.sbt

name := "test"
version := "1.0"
scalaVersion := "2.12.2"

项目/build.properties
sbt.version = 0.13.15

src / main / scala / 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 :
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命令:
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

是什么意思,我该如何解决?

仅供引用:我知道 http://www.scala-sbt.org/sbt-native-packager/formats/docker.html,但在我学习此内容时只想尝试编写Dockerfile。

最佳答案

我真的不知道sbt。但这似乎是您没有将项目复制到图像中(COPY中没有ADDDockerfile)。

尝试做类似的事情:

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 /myapp

CMD sbt run

COPY . /myapp

此处添加的只是一个 COPY,可将所有代码复制到 /myapp并将工作目录也更改为此文件夹。这会将构建上下文复制到 /myapp,然后 WORKDIR应该从同一文件夹运行 sbt run

关于scala - java.lang.RuntimeException:未检测到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com