提问者:小点点

要运行小型Java类的Docker:无法找到或加载主类(即使它存在)[重复]


我意识到这个问题可能已经被问过了,但在我的研究中我找不到答案。我可能犯了一个简单的错误。

我想在本地用Docker运行一个Java类,在一个容器内。下面是我的DockerFile:

DockerFile

FROM maven:3.5.2-jdk-8

COPY src /src

RUN javac src/java/com/Main.java
CMD java src/java/com/Main

然后我按顺序运行以下命令:

docker build -t my_image_6_26_19:latest .
docker run -it my_image_6_26_19:latest

命令运行正常,但命令引发以下错误:

Error: Could not find or load main class src.java.com.Main

我在SO上回顾了以下问题,但似乎没有一个答案有效(或者我没有找到解决办法):

当我构建容器时,通过一些调试(codeRun ls/src/java/com/code>),我可以看到正在创建一个文件。我不知道为什么那个文件找不到。另外,我尝试将我的Dockerfile的最后一行更改为,但没有成功。


共2个答案

匿名用户

如果没有包,请尝试:

 CMD java -classpath src/java/com Main

如果它确实有一个包(例如,可能?)尝试:

CMD java -classpath src/java com.Main

匿名用户

来自@martijno的第二个版本是corect版本。我另外建议告诉编译器将输出写入另一个目录,例如:

RUN javac src/java/com/Main.java -d bin
CMD java -cp bin com.Main