Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

887
Views
Docker para ejecutar una clase pequeña de Java: no se pudo encontrar o cargar la clase principal (aunque existe)

Me doy cuenta de que es posible que ya se haya hecho esta pregunta, pero en mi investigación no puedo encontrar una respuesta. Probablemente estoy cometiendo un simple error.

Me gustaría ejecutar una clase de Java localmente con Docker, dentro de un contenedor. A continuación se muestra mi 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

Luego ejecuto estos comandos en orden:

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

El comando de build funciona bien, pero el comando de run arroja el siguiente error:

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

He revisado las siguientes preguntas sobre SO, pero parece que ninguna respuesta funciona (o tal vez no entendí la solución):

  • Creación de una imagen acoplable desde Dockerfile con maven - Error: "No se pudo encontrar o cargar la clase principal"
  • DockerFile para ejecutar un programa Java
  • Error de Docker: no se pudo encontrar o cargar la clase principal Main.Main

Cuando construyo el contenedor, a través de una depuración ( RUN ls /src/java/com ) puedo ver que se está creando un archivo Main.class . No estoy seguro de por qué no se puede encontrar ese archivo. Además, he intentado cambiar la última línea de mi Dockerfile a CMD java src/java/com/Main.class , pero no tuve suerte.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si Main no tiene un paquete, intente:

 CMD java -classpath src/java/com Main

si tiene un paquete (por ejemplo, com , ¿quizás?) intente:

 CMD java -classpath src/java com.Main
over 4 years ago · Santiago Trujillo Report

0

La segunda versión en respuesta de @martijno es la correcta. Además, recomiendo decirle al compilador que escriba la salida en otro directorio, por ejemplo, bin :

 RUN javac src/java/com/Main.java -d bin CMD java -cp bin com.Main
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!